ffmpeg检测立体声通道是否实际上是单声道

时间:2019-01-31 18:04:01

标签: ffmpeg

我可以检测(用ffmpeg或类似的东西)立体声文件的左右两个通道实际上是否相同,因此该文件是单声道的吗?

伪代码:

left_channel = read_left_channel_from(file)
right_channel = read_right_channel_from(file)
return left_channel.equals(right_channel)

2 个答案:

答案 0 :(得分:2)

反转一个通道的相位,然后下混为单声道,如果有任何东西,则进行音量检测:

-filter_complex "stereotools=phasel=1[tmp];[tmp]pan=1c:c0=0.5*c0+0.5*c1,volumedetect"

答案 1 :(得分:0)

另一种解决方案是为每个通道计算 MD5 哈希值。

ffmpeg -loglevel -8 -i <INPUT> -filter_complex "[0:a]channelsplit=channel_layout=stereo[left][right]" -map "[left]" -f md5 - -map "[right]" -f md5 -

这个答案虽然比 Vit 的答案更好地复制了你的伪代码,但在大多数实际情况下更糟糕;音频通道可能过于相似(超出人类感知),但会产生不同的 MD5 哈希值。