Кодер LAME сохраняет контрольную сумму CRC16 аудиопотока в заголовке каждого MP3, который он кодирует. Затем можно вычислить «фактическую» контрольную сумму звука и сравнить с исходным значением позднее, чтобы проверить, не поврежден ли звук (не беспокоясь о тегах ID3 и т. П., Изменяющих вычисленное значение).
В Windows была утилита командной строки под названием LameTag, которая могла вычислить контрольную сумму и сравнить ее с оригиналом. К сожалению, он заброшен и, вероятно, нелегко переносим на OS X, что, конечно, я и использую. Я думаю, что EncSpot способен сделать то же самое, но опять-таки это только для Windows.
У меня такой вопрос: есть ли подобные утилиты, которые совместимы с Mac, Linux, BSD или аналогичными?
Я нашел несколько таких, которые могут показать исходный CRC (например, eyeD3
), но они не могут вычислить текущий. Есть также несколько утилит, которые утверждают, что проверяют наличие коррупции в MP3, но я не нашел ни одной, которая на самом деле использует фрейм MusicCRC - большинство из них, похоже, используют более общий метод проверки, иначе они используют фреймы CRC (которые по умолчанию отключены в LAME и на них нельзя положиться).
редактировать:
Думаю, я ответил на свой вопрос. Пытаясь исследовать это, я наткнулся на скрипт Python для мутагена, библиотеки аудио-метаданных QuodLibet. Сценарий предназначен для чтения информационного тега LAME, и, хотя он не имеет отношения ни к одному из полей CRC, я смог создать что-то, что делает на основе его примера. После нескольких часов возни с вещами (я ужасный программист и абсолютно ничего не знаю о Python), мне наконец-то удалось написать что-то такое, что, несмотря на отсутствие функций и медлительность, возвращает исходные CRC и вычисляет новые:
# Known good track
kapche-lanka:test % ../mp3crc.py "10 - CLAW FINGER.mp3"
10 - CLAW FINGER.mp3:
Original MusicCRC: 8171
Computed MusicCRC: 8171
Original Info Tag CRC: AEFD
Computed Info Tag CRC: AEFD
# Known bad track
kapche-lanka:test % ../mp3crc.py "10 - Griffons Never Die.mp3"
10 - Griffons Never Die.mp3:
Original MusicCRC: 2014
Computed MusicCRC: BCF1
Original Info Tag CRC: DF02
Computed Info Tag CRC: DF02
Я обновлю этот пост еще раз, чтобы добавить ссылку на сценарий, когда я получу его более серьезным образом.
Спасибо!
edit2:
Я добавил ссылку на свой скрипт ниже (см. Принятый ответ). Она называется mp3crc
и, хотя она не разработана профессионально, похоже, по большей части работает: