Я получаю эти результаты под 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 только для аудиоданных? Как заставить ffmpeg возвращать только строку (MD5=xxxxx.xxxxx)?

1 ответ1

2

Если вы читаете документацию для мультиплексора 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .