FFMPEG framemd5为什么提供不同的音频大小?

时间:2018-12-30 12:30:34

标签: audio ffmpeg checksum

我正在使用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

1 个答案:

答案 0 :(得分:1)

立体声文件音频流,必须将其拆分为MXF容器的两个单声道流

如果这样做,则是对音频进行转码。但是由于目标编解码器是PCM,并且流参数可能保持不变,所以音频保真度得以保留。

对于您的主要查询,MP4通常包含AAC音频,其中每个帧包含1024个样本。 PCM是未编码的音频,因此可以封装为任意大小的帧。

在检查MXF以复制MP4框架时添加-af asetnsamples=1024