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

У меня есть файл 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. Если они совпадают, поздравляю! Ваши файлы содержат те же данные. Если они не совпадают, опубликуйте вывод этих команд здесь, и я посмотрю. Потенциально, есть разница в битрейтах или что-то в этом роде (не должно быть... но может быть, я не знаю).

Обратите внимание, что ffmpegs создаст сравнительно большие промежуточные файлы.

Вы можете использовать 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 рядом

Другие вопросы по тегам