我正在检查一个音频文件,注意到 mediainfo
和 ffprobe
返回的 channel 数不同。
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,他们的开发人员决定这样做是有充分理由的(解码和处理许多无法处理文件中间 channel 数变化的工具),只是不是您想要的。
如果您不相信,请尝试 to decode each channel in a different file ,并比较文件。两个文件之间只有 1 个字节不同,该字节表示这是左声道还是右声道。音频数据是相同的:您的文件实际上是单声道的,甚至 FFmpeg 在解码时也同意这一点(实际上它复制了单声道 channel )。
Jérôme,MediaInfo 的开发者.
关于ffmpeg - mediainfo 和 ffprobe 返回的 channel 数差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66650791/