Koder LAME przechowuje sumę kontrolną CRC16 strumienia audio w nagłówku każdego kodowanego pliku MP3. „Rzeczywista” suma kontrolna audio może być następnie obliczona i porównana z pierwotną wartością w późniejszym terminie, aby sprawdzić, czy dźwięk został uszkodzony (bez konieczności martwienia się o znaczniki ID3 i podobne zmiany wartości obliczonej).
W systemie Windows istniało narzędzie wiersza polecenia o nazwie LameTag, które było w stanie obliczyć sumę kontrolną i porównać ją z oryginałem. Niestety, jest porzucony i prawdopodobnie nie jest łatwo przenośny na OS X, co oczywiście jest tym, czego używam. Myślę, że EncSpot jest w stanie zrobić to samo, ale znowu jest tylko Windows.
Moje pytanie brzmi: czy istnieją takie narzędzia, które są kompatybilne z komputerami Mac, Linux, BSD lub podobnymi?
Znalazłem kilka, które mogą pokazać oryginalny CRC (jak eyeD3
), ale nie mogą obliczyć bieżącego. Istnieje również kilka narzędzi, które twierdzą, że sprawdzają korupcję w plikach MP3, ale nie znalazłem żadnych, które rzeczywiście używają ramki MusicCRC - większość z nich wydaje się używać bardziej ogólnej metody sprawdzania, lub używają CRC ramek (które są domyślnie wyłączone w LAME i nie można na nich polegać).
edytować:
Myślę, że odpowiedziałem na moje pytanie. Próbując to zbadać, natknąłem się skrypt Pythona dla mutagen , Biblioteka metadanych audio QuodLibet. Skrypt został zaprojektowany do odczytu tagu informacyjnego LAME i chociaż nie dotyczy konkretnie żadnego z pól CRC, udało mi się stworzyć coś, co opiera się na jego przykładzie. Po kilku godzinach bałaganu z rzeczami (jestem okropnym programistą i nie wiem absolutnie nic o Pythonie) udało mi się w końcu napisać coś, co, mimo że jest wolne i wolne, zwraca oryginalne CRC i oblicz nowe:
# 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
Zaktualizuję ten post jeszcze raz, aby dodać link do skryptu, gdy tylko zacznę działać w bardziej poważny sposób.
Dzięki!
edytuj2:
Dodałem link do mojego skryptu poniżej (zobacz zaakceptowaną odpowiedź). To jest nazwane mp3crc
i choć nie jest fachowo zaprojektowany, wydaje się, że działa w większości:
$APPTYPE
deklaracja, a TnTClasses jest częścią Sterowanie Unicode TNT .