Как определить, что файл закодирован с использованием mp3PRO?
У меня есть папка, которая содержит много файлов MP3, некоторые из них закодированы с использованием mp3PRO.
Поскольку этот формат устарел, я хотел бы преобразовать их обратно в MP3 (конвертеры можно легко найти).
Есть ли способ программно обнаружить, если файл закодирован в формате mp3PRO? (например: просматривая заголовок файла или конкретные подписи с помощью шестнадцатеричного редактора)
Официальный проигрыватель может определить, закодирован ли файл с использованием mp3PRO (выделен логотип или нет), поэтому я полагаю, что это технически возможно.
До сих пор я обнаружил, что битрейт файла mp3PRO выглядит довольно низким (50% не кодированного файла): например, файл со скоростью 128 кбит / с будет отображаться как 64 кбит / с. Однако файл 320 кбит / с будет отображаться как 160 кбит / с (что довольно распространено), поэтому его нельзя использовать как правило.
3 ответа
Вот что я узнал и как я это исправил. Я написал здесь на случай, если кому-то понадобится:
Файлы MP3Pro не содержат никаких специальных флагов в заголовке mp3, которые помогли бы их распознать.
Технически они очень похожи на обычные mp3-файлы, за исключением того, что они кодируются половиной бит и частотой дискретизации (например, файл 128kpbs 44100hz будет кодироваться как файл 64kps 22050hz, в результате чего файл mp3pro будет примерно вдвое меньше оригинального файла).
Это сделано для совместимости, поэтому игроки по умолчанию могут играть в них без каких-либо изменений.
Они также содержат некоторые данные SBR, которые позволяют синтетически восстановить потерянную звуковую часть (высокие частоты) и воспроизводить их до преобразования mp3 pro.
Обнаружение данных SBR кажется очень трудным, если не невозможным: для этого потребуется декодировать фактические mp3-кадры. Также нет документации по формату mp3pro.
Что я сделал (что работает, но требует некоторых ручных усилий): я добавил все проверяемые файлы в список воспроизведения mp3-плеера (в моем случае foobar 2000), а затем отсортировал файлы по столбцу частоты дискретизации: большинство mp3-файлов 22050 Гц действительно были MP3 Pro файлы.
Они были преобразованы обратно в mp3 с помощью winamp + созданный для него плагин mp3pro, доступный здесь: http://www.wav-mp3.com/mp3pro-to-mp3.htm
Вы можете использовать инструмент Linux/Cygwinfile
для отображения частоты дискретизации. Если MP3 был скопирован с компакт-диска, то будет 44,1 кГц, а если MP3Pro, то сообщит 22,05 кГц.
file '001_Air Liquide - First Piece Of Evidence.mp3'
001_Air Liquide - First Piece Of Evidence.mp3: Audio file with ID3 version 2.3.0, \
contains:MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo
file 'Air Liquide - First Piece Of Evidence MP3Pro.mp3'
Air Liquide - First Piece Of Evidence MP3Pro.mp3: Audio file with ID3 version 2.3.0, \
contains:MPEG ADTS, layer III, v2, 96 kbps, 22.05 kHz, JntStereo
Вы можете использоватьgrep
принимать решение. Я работаю над сценарием Python для преобразования тысяч файлов путем автоматизации Winamp 2.95 и официального декодера MP3 Thompson, а такжеlame
перекодировать. Давным-давно я скопировал всю свою коллекцию компакт-дисков в формате mp3pro, и пришло время это исправить.
У кого-то действительно есть патент на это.
https://patents.google.com/patent/US7334176B2/en?oq=7334176
Это включает в себя просмотр вспомогательных данных и расчет CRC, и это было больше, чем мне хотелось читать.