Является ли ведущая структура в файле MP3 реальным кадром? - PullRequest
5 голосов
/ 19 апреля 2011

Сейчас я занимаюсь декодированием файлов MP3, но у меня есть некоторые базовые знания о файле MP3. Я реализую простой декодер для MP3 в эти дни. При сравнении декодированного результата с результатом декодера Maaate я сталкиваюсь с этой проблемой.

Мой декодер извлекает еще один кадр, чем декодер Maaate. Изучив результаты примера файла MP3, я обнаружил, что первый кадр ненормальный. Для моего образца файла первый кадр имеет длину 413 байт с заголовком кадра 0xfffb9064, отличным от всех остальных кадров с длиной 100 байт и заголовком 0xfffb1064.

Мой вопрос : Является ли первый «кадр» в результате реальным кадром? Так почему же он отличается от других? Если нет, то для чего используется эта структура и как отличить ее от других, так как они совместно используют код синхронизации кадра 0xfff?

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

MP3-потоки не имеют заголовка файла.Звучит немного странно, что у вас есть только один кадр в начале, который длиннее остальных, но это совершенно законно.

Краткое описание битов в заголовке: http://www.datavoyage.com/mpgscript/mpeghdr.htm

В вашем случае оба типа заголовков совместно используют:

  • MPEG-1
  • Уровень 3
  • Не защищен
  • 44,1 кГц
  • Без заполнения
  • Не личное
  • M / S совместное стерео
  • Нет авторских прав
  • Оригинальные носители
  • Без акцента

Первый кадр отличается от остальных:

  • 128 Кбит (в результате получается 417-байтовый кадр минус 4-байтовый заголовок)

Остальные:

  • 32 Кбит (в результате получается 104-байтовые кадры минус 4-байтовые заголовки)

На этой странице есть формула для расчета размера кадра на основе заголовка:144 * битрейт / частота дискретизации + заполнение.

Я подозреваю, что первый кадр 128 Кбит является артефактом (ошибкой) кодера, используемого для генерации выборки.ле.Это все еще файл с постоянным битрейтом на 32 Кбит после первого кадра.Учитывая, что MP3-декодер не может выдавать выходные данные, пока у него нет нескольких кадров, и он не будет внезапно сталкиваться с битрейтом на половине пути, это вряд ли что-то расстроит.

0 голосов
/ 31 декабря 2013

Вполне может быть, что первый кадр является кадром VBR.проверьте [здесь] и используйте редактор hexa.Надеюсь, это поможет

...