Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 合并MP4文件的MDAT原子_Ios_Video_Mp4_Aac - Fatal编程技术网

Ios 合并MP4文件的MDAT原子

Ios 合并MP4文件的MDAT原子,ios,video,mp4,aac,Ios,Video,Mp4,Aac,我有一系列MP4文件(H.264视频、AAC音频、16KHz)。我需要以编程方式将它们合并在一起(Objective-C,iOS),但最终文件太大,无法保存在内存中,因此我无法使用AVFramework来完成这项工作 我已经写了一些代码,这些代码将进行合并,并在连接各个MDAT的内容的基础上处理所有MP4原子(STBL、STSZ、STCO等)。我的问题是,当生成的文件播放时,音频逐渐与视频不同步。似乎正在发生的是,每个文件中的音频和视频长度之间存在差异,我连接的文件越多,这种差异就越大 我使用M

我有一系列MP4文件(H.264视频、AAC音频、16KHz)。我需要以编程方式将它们合并在一起(Objective-C,iOS),但最终文件太大,无法保存在内存中,因此我无法使用AVFramework来完成这项工作

我已经写了一些代码,这些代码将进行合并,并在连接各个MDAT的内容的基础上处理所有MP4原子(STBL、STSZ、STCO等)。我的问题是,当生成的文件播放时,音频逐渐与视频不同步。似乎正在发生的是,每个文件中的音频和视频长度之间存在差异,我连接的文件越多,这种差异就越大

我使用MP4Box从命令行生成一个文件,它与我的输出“相似但不同”。一个显著的不同是MDAT的长度发生了变化,块偏移量也发生了变化(尽管样本大小保持一致)

我最近读到AAC编码在流的开头和结尾引入了填充,所以我想知道这是否是我需要处理的事情


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

感谢指针Niels


因此,该方法似乎是完全合理的,但是由于采样频率之间的差异,每个MP4文件的音频长度和视频长度之间存在边际差异。MP4s包括一个EDTS.ELST组合,用于纠正该文件的此问题。当我合并文件时,我没有考虑EDTS。合并EDT已经解决了这个问题。

因此,该方法似乎不完全合理,但是由于采样频率之间的差异,每个MP4文件的音频长度和视频长度之间存在细微差异。MP4s包括一个EDTS.ELST组合,用于纠正该文件的此问题。当我合并文件时,我没有考虑EDTS。合并EDTS已解决您应该回答自己的问题并将其标记为正确的问题。