-->

合并的MP4文件MDAT原子(Merge MDAT atoms of MP4 files)

2019-10-29 17:03发布

我有一系列的MP4文件(H.264视频,AAC音频,16KHz的)。 我需要将它们一起合并程序(Objective-C中的iOS),但最终的文件将过大的内存来保存,所以我不能使用AVFramework为我做到这一点。

我已经写代码,会做合并,并采取一切仅仅基于串联各MDATS内容的MP4原子(STBL,STSZ,STCO等)的照顾。 我的问题是,虽然得到的文件播放,音频逐渐变得不同步视频。 什么似乎是发生的是,有在变得更糟糕了多个文件,我串连每一个文件的音频和视频长度之间的差距。

我用MP4Box生成命令行文件,它是“类似,但不同的”我的输出。 一个显着的不同是,MDAT的长度改变,且组块偏移量也改变(尽管样品大小保持一致)。

我最近读了AAC编码在数据流的开头和结尾介绍填充所以不知道这是否是我需要处理。

问:给定两个含H264编码数据和AAC音频MDAT原子,是我的基本方法声音或做我需要反思以某种方式MDAT数据。

Answer 1:

感谢您的指针尼尔斯

如此看来,该方法是完全合理的但是每一个人MP4文件具有音频长度,由于采样频率之间的差异的视频长度之间的边际差异。 该MP4S包括EDTS.ELST组合,解决此问题该文件。 我没有考虑EDTS当我合并的文件。 合并EDTS已经解决了该问题。



文章来源: Merge MDAT atoms of MP4 files
标签: ios video mp4 aac