Как определить, что файл закодирован с использованием 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, и это было больше, чем мне хотелось читать.

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