使用 ffmpeg 进行音频 MD5 校验

使用 ffmpeg 进行音频 MD5 校验

我在 Windows 下得到了这些结果(ffmpeg version N-78636-g45d3af9

ffmpeg.exe -i TEST.mp3 -c:a copy -f md5 -
MD5=cb017003b355c2b39d71e8020bd76f5b

ffmpeg.exe -i TEST.mp3 -f md5 -
MD5=7bbe06733ddc930c8a120bced0f3fad9

为什么不同?仅计算音频数据的 MD5 校验和的正确方法是什么?如何让 ffmpegMD5=xxxxx.xxxxx仅返回字符串 ( )?

答案1

如果你读过文档对于 MD5 多路复用器,它表示:

默认情况下,在计算哈希值之前,音频帧会转换为带符号的 16 位原始音频,视频帧会转换为原始视频。

因此,在第二个命令中(未指定任何编解码器选项),这相当于-c:a pcm_s16le,而在第一个示例中,您保留了 MP3 音频比特流。这就是它们具有不同校验和的原因。

正确的方法可能是使用以下命令禁用视频流(例如,如果 MP3 文件包含艺术作品)-vn

ffmpeg.exe -i TEST.mp3 -vn -f md5 -

您可以通过重定向 stderr 来禁用其他输出:

ffmpeg.exe -i TEST.mp3 -vn -f md5 - 2>NUL

在 Linux 上,使用/dev/null而不是NUL

相关内容