mediainfo 和 ffprobe 返回的通道数差异

Difference in number of channels returned by mediainfo and ffprobe

我在检查音频文件时注意到 mediainfoffprobe 返回的声道数不同。

mediainfo命令:

mediainfo audio.mp4

ffprobe命令(见channels值):

ffprobe -i audio.mp4 -show_streams

有谁知道发生了什么事吗? 这是您自己测试的audio file

AAC 内容,宣布为单声道。但 AAC 可能有一个隐藏的 Parametric Stereo 功能,这使得该公告在 99.99% 的情况下都不是现实(HE-AAC 很少用于单声道内容)。

如果在解码器初始化后检测到立体声,FFmpeg 无法从单声道切换到立体声,因此由于预期在某个时候会获得参数立体声,它会强制其输出为立体声。

MediaInfo 没有此限制,因此仅当检测到参数立体声时才显示立体声。在此文件中未检测到参数立体声。

在这种情况下,MediaInfo 显示正确的值(单声道)而 FFmpeg 显示不正确的值(立体声)。不是在这里责怪 FFmpeg,他们的开发人员决定这样做是有充分理由的(解码和处理许多无法处理文件中间通道数变化的工具),只是不是您要找的东西。

如果您不相信,请尝试 to decode each channel in a different file,然后比较文件。两个文件之间只有 1 个字节不相同,这个字节表示这是左声道 vs 右声道。音频数据相同:您的文件实际上是单声道的,甚至 FFmpeg 在解码时也同意这一点(实际上它复制了单声道)。

Jérôme,MediaInfo 的开发者。