mediainfo 和 ffprobe 返回的通道数差异

Hai*_*ran 2 ffmpeg mediainfo ffprobe

mediainfo我正在检查一个音频文件,注意到和返回的频道数量ffprobe不同。

命令mediainfo

mediainfo audio.mp4
Run Code Online (Sandbox Code Playgroud)

命令ffprobe(查看channels值):

ffprobe -i audio.mp4 -show_streams
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么事?这是供您自己测试的音频文件

小智 5

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

\n

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

\n

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

\n

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

\n

如果您不相信,请尝试解码不同文件中的每个通道,然后比较文件。两个文件之间只有 1 个字节不同,该字节表示这是左声道还是右声道。音频数据是相同的:您的文件实际上是单声道的,甚至 FFmpeg 在解码时也同意这一点(实际上它会复制单声道)。

\n

J\xc3\xa9r\xc3\xb4me,MediaInfo的开发者。

\n