Как сравнить два аудио файла без потерь?

3584
Determinant

У меня есть файл M4A, который также преобразуется в файл FLAC. Я хотел бы видеть, если преобразование без потерь, а именно, точно ли вывод в pcm от M4A точно так же, как от декодирования FLAC.

Я предполагаю, что есть способ использовать FFmpeg или Libav для получения некоторого «сырого» вывода и сравнения их?

1
Смотрите также: http://superuser.com/questions/136514/finding-out-if-a-flac-or-wavpack-audio-file-is-not-originally-encoded-from-a-los Mechanical snail 11 лет назад 0

2 ответа на вопрос

11
LordNeckbeard

Вы можете использовать md5muxer в ffmpeg для вычисления и печати хеша MD5 всех входных аудио (и видео) кадров без необходимости в промежуточных файлах. В этом примере flac был создан из mp3 (без потерь обычно без рекомендуемой процедуры, но это только демонстрация).

$ ffmpeg -i left_right.mp3 -map 0:a -f md5 - 2>/dev/null MD5=a34bfd9245ad6d69eddcb92035219044  $ ffmpeg -i left_right.flac -map 0:a -f md5 - 2>/dev/null MD5=a34bfd9245ad6d69eddcb92035219044 

Существует также framemd5мультиплексор для вычисления и печати хеша MD5 для каждого аудио (и видео) пакета.

Также см. Framemd5 Intro и HowTo .

+1 Это хорошо также потому, что полностью исключает проблему метаданных в несжатом файле, которые в противном случае могли бы отличать идентичные аудиофайлы. a CVn 11 лет назад 2
3
thirtythreeforty

I'd try converting them both to WAV and comparing their checksums.

ffmpeg -i file1.m4a file1.wav ffmpeg -i file2.flac file2.wav md5sum file1.wav md5sum file2.wav rm file?.wav 

Compare the md5s produced. If they match, congratulations! Your files contain the same data. If they don't match, post the output of those commands here, and I'll look. Potentially there is a bitrate difference or something (there ought not to be... but there may be, I don't know.)

Note that the ffmpegs will generate comparatively large intermediate files.

Похоже, что размер вывода `ffmpeg -y -i in.m4a -ac 2 -ar 48000 -acodec flac out.flac` отличается от размера` ffmpeg -y -i in.m4a -acodec flac out.flac`. Я понятия не имею, что происходит при преобразовании, а также тонкие параметры. Не могли бы вы немного объяснить? Determinant 11 лет назад 0
С последней командой md5sum тоже самое. Determinant 11 лет назад 0
И первая команда скопирована с форума, я думаю, размер файла как-то связан с числом «48000», верно? Determinant 11 лет назад 0
Ага. Смотрите, `-ar 48000` говорит использовать 48000 выборок в секунду. Если это отличается от количества выборок источника в секунду, ffmpeg интерполирует (вставляет дополнительные значения между ними), и это делает результирующий файл другим. Если вы просто позволите ffmpeg автоматически определять все, он попытается изменить как можно меньше. thirtythreeforty 11 лет назад 1
Еще один вопрос, является ли wav-файл стандартным необработанным файлом? Я имею в виду, есть ли другие альтернативные форматы, кроме wav в области ПК? Determinant 11 лет назад 0
Я предполагаю, что есть два хорошо известных несжатых стандарта: WAV и AIFF. AIFF часто используется системами Apple; остальная часть всех использует WAV. thirtythreeforty 11 лет назад 0
Спасибо! Быстрый и понятный ответ. Determinant 11 лет назад 0
@ymfoi WAV ** не ** стандарт файлов как таковой. Файлы WAV являются просто контейнерами и поэтому могут содержать разные аудиокодеки. В этом случае это будет звук PCM (с импульсной кодовой модуляцией), который без потерь. Но внутри WAV-файла также могут быть сжатые кодеки: http://en.wikipedia.org/wiki/Wav#WAV_file_compression_codecs_compared slhck 11 лет назад 5
@slhck Итак, есть ли какие-либо методы для извлечения сырых данных PCM из декодера? Determinant 11 лет назад 0
@ymfoi FFmpeg по умолчанию выберет 16-битную PCM, так что вы уже получите несжатый, «неизмененный» звук (если только ваш источник не использовал большую битовую глубину, например 32-битную; в этом случае вы можете указать, например, `-c: a pcm_s32le`) ). slhck 11 лет назад 0
@ Понятно. Могу ли я сказать, что файл WAV, который я получил от FFmpeg, состоит из нескольких фрагментов необработанных данных PCM с некоторой дополнительной информацией, и есть некоторые другие похожие форматы, такие как WAV, например, AIFF и т. Д.? Determinant 11 лет назад 0
@ymfoi Это правильно. WAV, как и AIFF, - это просто контейнеры, которые действительно хранят так называемые «порции» аудиоданных. slhck 11 лет назад 0
@slhck Thx ~ Теперь у меня есть более четкое понимание WAV, который был для меня загадкой в ​​течение многих лет. Determinant 11 лет назад 0
@ спасибо, спасибо. Я забыл провести это различие. Однако в 99% случаев вы увидите, что PCM является единственным форматом потока, который вы видите в контейнере WAV. thirtythreeforty 11 лет назад 0

Похожие вопросы