Как сравнить два аудио файла без потерь?
У меня есть файл M4A, который также преобразуется в файл FLAC. Я хотел бы видеть, если преобразование без потерь, а именно, точно ли вывод в pcm из M4A точно так же, как из декодирования FLAC.
Я предполагаю, что есть способ использовать FFmpeg или Libav для получения некоторого "сырого" вывода и сравнения их?
2 ответа
Я бы попробовал преобразовать их в WAV и сравнить их контрольные суммы.
ffmpeg -i file1.m4a file1.wav
ffmpeg -i file2.flac file2.wav
md5sum file1.wav
md5sum file2.wav
rm file?.wav
Сравните произведенные md5s. Если они совпадают, поздравляю! Ваши файлы содержат те же данные. Если они не совпадают, опубликуйте вывод этих команд здесь, и я посмотрю. Потенциально, есть разница в битрейтах или что-то в этом роде (не должно быть... но может быть, я не знаю).
Обратите внимание, что ffmpeg
s создаст сравнительно большие промежуточные файлы.
Вы можете использовать md5
muxer в 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.
Вы можете попробовать визуализировать спектр звука, а затем сравнить два изображения рядом.
Вот способ сделать это с помощью
showcqt
фильтр.
ffmpeg -i "video_file_with_audio.mkv" -i "alternative_audio.m4a" \
-filter_complex "[0:a]asplit[a1][ao];
[a1]volume=1.2,showcqt=fps=23.976:s=480x1080:count=3:axis=0:axis_h=30:bar_h=100:basefreq=200:endfreq=12495[vfreq1];
[1:a]showcqt=fps=23.976:s=480x1080:count=3:axis=0:axis_h=30:bar_h=100:basefreq=200:endfreq=12495[vfreq2];
[vid1]fps=23.976,scale=-1:1080[v1];[v1][vfreq1][vfreq2]hstack=3[vo]" \
-map "[vo]" -map "[ao]" output.mp4
Предполагается, что у вас есть видео со звуком, а затем альтернативный звук для этого видео.
Смотрите этот снимок экрана showcqt рядом