ffmpeg计算压缩和未压缩视频之间的音频/视频差异

时间:2019-06-14 09:05:28

标签: audio video ffmpeg compression

我正在尝试计算严格压缩的视频文件与未压缩的视频文件之间的音频和视觉差异。 我使用管道是因为最终我希望它能从摄像机流中获取src。

我已经设法获得了想要的视频结果,但是我在音频方面苦苦挣扎。 我添加了一条线来反转压缩音频的相位,这样当它们加到混合中时,它们几乎应该相互抵消,但这不会发生。

ffmpeg -i input.avi -f avi -c:v libxvid -qscale:v 30 -c:a wmav1 - | \
ffmpeg -i - -f avi -af "aeval='-val(0)':c=same" - | \
ffmpeg -i input.avi -i - -filter_complex "blend=all_mode=difference" -c:v libx264 -crf 18 -f avi - | \
ffplay -

当我应该听到的只是压缩伪像时,我仍然可以听到所有音频。

2 个答案:

答案 0 :(得分:0)

编码的音频样本可能会引入一些延迟。另外您的命令不正确。

答案 1 :(得分:0)

首先,我不确定您的方法是否会识别音频压缩“伪像”

您的命令不执行任何音频比较,仅反转单个通道。另外,音频和视频被压缩两次,最后ffmpeg命令接收的编解码器是mpeg4mp3的默认AVI编解码器。

使用

ffmpeg -i input.avi -f matroska -c:v libxvid -qscale:v 30 -c:a wmav1 - |\
ffmpeg -i input.avi -i - -filter_complex "[0][1]blend=all_mode=difference;[1]aselect=gt(n\,0),asetpts=PTS-STARTPTS[1a];[0][1a]amerge,aeval=val(0)-val(1):c=mono" -c:v rawvideo -c:a pcm_s16le -f matroska - |\
ffplay -

我认为您的音频是单声道。如果您的音频具有N个通道,则您的现场需要N个表达式,其中第M个表达式为val(M-1)-val(N+M-1)

我还修剪了第一个编码音频帧,以减轻Paul提到的编码器延迟,这似乎在这里起作用。