我写了一个MP4解析器,它可以很好地读取MP4中的原子,并将它们拼接在一起 - 结果是一个技术上有效的MP4文件,Quicktime可以打开等等,但它不能播放任何音频,因为我相信定时/采样信息全部关闭.我应该提一下,我只对音频感兴趣.
我正在做的是尝试从现有的MP4中取出moov atoms/etc,然后只取一个文件中mdat原子的子集来创建一个新的,更小的MP4.在这方面,我已经改变了duration在mvhd原子,以及在时间mdia头.tkhd这个文件中没有原子有编辑,所以我相信我不需要改变那里的持续时间 - 我错过了什么?
在创建新的MP4时,我正确地mdat使用宽盒子对块进行切片,并将'mdat'标题/大小保持在正确的位置 - 我确保使用新内容更新大小.
现在它完全有110%可能我错过了一些关于格式的重要内容,但如果可能的话,我很想得到最后一块.有人有任何意见/想法吗?
代码可以在以下链接中找到: