我正在使用FFmpeg framemd5验证当我将Sony XDCAM“ MP4”文件重新包装为MXF文件时,我没有在重新编码音频视频数据。 “ MP4”具有立体声文件PCM音频流,必须将其拆分为MXF容器的两个单声道流。视频为25 fps,音频为48000采样率。 (我知道MP4容器规范不允许PCM作为音频流。但是,这是Sony的特殊非标准MP4-幸运的是FFmpeg仍然可以读取)
我的原始文件(MP4)的framemd5输出的前几行如下:
0, 0, 0, 1, 3110400, 1851d2848eeef6636ea5ff1caa0c3555
1, 0, 0, 1024, 4096, eb35a0242f1b59d64dc340913d4ba757
1, 1024, 1024, 1024, 4096, 37c3a63ff6af92890056e42d8146275a
MXF的前几行输出如下:
0, 0, 0, 1, 3110400, 1851d2848eeef6636ea5ff1caa0c3555
1, 0, 0, 1920, 3840, a01565b99da62249d86200070eff2729
0, 1, 1, 1, 3110400, eb46f1690b2f8e3f32d07cf8ccefcdf4
在MXF输出中,音频流的“持续时间”为1920(自48000/25 = 1920以来似乎有意义,而“大小”为3840(由于48000 * 16/8/25 = 3840)
有人可以解释为什么MP4文件的持续时间= 1024,大小= 4096
答案 0 :(得分:1)
立体声文件音频流,必须将其拆分为MXF容器的两个单声道流
如果这样做,则是对音频进行转码。但是由于目标编解码器是PCM,并且流参数可能保持不变,所以音频保真度得以保留。
对于您的主要查询,MP4通常包含AAC音频,其中每个帧包含1024个样本。 PCM是未编码的音频,因此可以封装为任意大小的帧。
在检查MXF以复制MP4框架时添加-af asetnsamples=1024
。