Структура файла в формате MP3
Обновлено: 21.11.2024
Эти диаграммы — моя попытка визуализировать внутреннюю структуру mp3-файла с использованием тегов ID3 версии 2.3. Они основаны на том, что я прочитал в Интернете. Признаюсь, я не всегда полностью понимал то, что читал, поэтому, если вы обнаружите, что я что-то не так, свяжитесь со мной, и я с радостью исправлю это.
Чтобы полностью понять, что происходит, вам может потребоваться выполнить некоторые домашние задания. Вам нужно знать об этих темах. (Или вы можете просто использовать dll, не слишком беспокоясь о том, что происходит внутри.)
- Числа Литтленда и Бигенда
- Целые числа SyncSafe
- Кодировка текста и спецификации (метки порядка байтов)
Общая структура
На этой диаграмме показана общая структура файла MP3 с использованием метаданных ID3 версии 2.3. В этом контексте «Тег» относится к блоку файла, содержащему все метаданные версии 2.3. Осторожно — это может сбить с толку, поскольку обычно «тег» относится к простому элементу метаданных, например, имени художника. Но не здесь.
Структура информационного блока заголовка
Существует основной заголовок и, при необходимости, расширенный заголовок. (Ни у одного из файлов в моей коллекции не было расширенного заголовка.)
Структура тега
Помните, что в mp3-файле тег — это блок файла, содержащий все метаданные, т. е. все, что мы обычно называем тегами: исполнитель, название и т. д.
Тег состоит из фреймов и, при необходимости, отступов. Нас больше всего интересуют текстовые фреймы, так как они содержат информацию о нашей музыке, по одному фрейму на элемент. Существуют и другие типы фреймов, большинство из которых мы можем игнорировать.
Структура кадра MP3 ID3 v2.3
Фрейм содержит один фрагмент информации о файле.
Структура текстового фрейма
Это фреймы, которые содержат текстовые данные, описывающие трек: artist='Prince', track='Purple Rain' и т. д.
Структура кадра COMM
Нас также могут заинтересовать фреймы COMMENT. Они могут содержать собственные двоичные данные, например, добавленные iTunes, или простые текстовые комментарии. Я решил обрабатывать текстовые комментарии, игнорируя двоичные комментарии.
Я не смог найти онлайн-объяснение их внутреннего формата, которое я мог бы полностью понять и которое соответствовало бы тому, что я видел в нескольких тестовых файлах, которые я исследовал. Приведенная ниже диаграмма является моим лучшим предположением, но отнеситесь к ней с «щепоткой соли».
В феврале 2021 года я получил несколько электронных писем от Тимми, в которых говорилось, что я могу ошибаться. Вот его комментарии к моей диаграмме фрейма COMM:
- – Комментарии, скорее всего, предназначены только для читаемого текста. В этом новом контексте различие между «бинарным» и «текстом» вводит в заблуждение, поскольку весь текст является бинарным; просто по-другому структурированный двоичный файл.
- - Упоминается «байт флага». Формулировка может немного ввести в заблуждение, поскольку она не является обязательной и на самом деле существует несколько вариантов. Этот первый байт определяет кодировку всех данных после кода языка.
- - В нем говорится, что если первый (кодирующий) байт установлен на 0x01, поле описания должно быть только 0xFF 0xFE. Это метка порядка байтов (BOM), которая фактически используется для начала строки (в данном случае только UTF-16 в режиме LE («не-BE»)), но строка может быть оставлена пустой. Порядок байтов спецификации зависит от желаемого порядка байтов.
- - Упоминается «2-байтовый разделитель 0x00 0x00». Его длина составляет всего 2 байта, если используется кодировка символов UTF-16(/BE). В противном случае это 1 байт.
-------------------------------------------------------
Кодировка текста, 1 байт
0x00 для ISO-8859-1, или
0x01 для UTF-16 с BOM, или
0x02 для UTF-16BE без BOM, или
0x03 для UTF-8 .
Код языка, 3 байта.
Например. "eng" (0x65, 0x6E, 0x67).
Описание комментария, n байтов.
Только если кодировка текста 0x01 UTF-16, описание должно начинаться со спецификации; xFE xFF или xFF xFE.
Описание может иметь длину 0, но должно заканчиваться завершающим символом NULL в соответствующем формате:
- Если кодировка текста 0x00 ISO-8859-1 или 0x03 UTF-8, символ NULL 1 байт; 0x00.
- Если кодировка текста 0x01 UTF-16 или 0x02 UTF-16BE, символ NULL занимает 2 байта; 0х00 0х00.
Комментарий, n байт(ов)
Комментарий обрывается внезапно без завершения символами NULL.
---------------------------------------
р>
Если кто-то еще знает больше меня и видит ошибки в этих заметках, свяжитесь со мной, и я либо прокомментирую их соответствующим образом, либо уберу их.
Аудиофайл MPEG состоит из более мелких частей, называемых кадрами. Как правило, фреймы являются независимыми элементами. Каждый кадр имеет свой собственный заголовок и звуковую информацию. Поскольку заголовок файла отсутствует, вы можете вырезать любую часть файла MPEG и правильно воспроизвести ее (это следует делать на границах кадров, но большинство приложений будут обрабатывать неправильные заголовки). Однако для уровня III это не на 100% правильно. Из-за внутренней организации данных в файлах MPEG Layer III кадры часто зависят друг от друга и их нельзя просто так обрезать.
Когда вы хотите прочитать информацию о файле MPEG, обычно достаточно найти первый кадр, прочитать его заголовок и предположить, что остальные кадры такие же. Но это может быть не всегда так. Файлы MPEG с переменным битрейтом могут использовать так называемое переключение битрейта, что означает изменение битрейта в соответствии с содержимым каждого кадра. Таким образом, более низкие битрейты могут использоваться в кадрах, где это не ухудшит качество звука. Это позволяет улучшить сжатие при сохранении высокого качества звука.
Заголовок кадра состоит из первых четырех байтов (32 бита) кадра. Первые одиннадцать битов (или первые двенадцать битов, см. ниже о кадровой синхронизации) заголовка кадра всегда устанавливаются и называются «кадровой синхронизацией». Таким образом, вы можете искать в файле первое вхождение кадровой синхронизации (это означает, что вы должны найти байт со значением 255, за которым следует байт с установленными тремя (или четырьмя) старшими битами). Затем вы читаете весь заголовок и проверяете правильность значений. В следующей таблице вы увидите точное значение каждого бита в заголовке. Каждое значение, указанное как зарезервированное, недопустимое, неправильное или недопустимое, должно указывать на недопустимый заголовок.
Кадры могут иметь проверку CRC. CRC имеет длину 16 бит и, если он существует, следует за заголовком кадра. После CRC идут аудиоданные. Вы можете рассчитать CRC кадра и сравнить его с тем, что вы читаете из файла. На самом деле это очень хороший метод проверки правильности кадра MPEG.
Вот представление содержимого заголовка. Символы от A до M используются для обозначения разных полей. В таблице ниже вы можете увидеть подробную информацию о содержании каждого поля.
AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM
Индекс битрейта
бит | V1,L1< /TD> | V1,L2 | V1,L3 | V2,L1 | V2, L2 и L3 | 0000 | бесплатно | бесплатно | бесплатно | бесплатно | бесплатно |
0001 | 32 | 32 | 32 | 32 | 8 |
0010 | 64 | 48 | 40 | 48 TD> | 16 |
0011 | 96 | 56 | 48 | < TD>5624 | |
0100 | 128 | 64 | 56 | 64 | 32 |
0101 | 160 | 80 | 64 | 80 | 40 |
0110 | 192 | 96 | 80 | 96 | 48 |
0111 | 224< /TD> | 112 | 96 | 112 | 56 |
1000 | 256 | 128 | 112 | 128 | 64 |
1001 | < TD>288160 | 128 | 144 | 80 | |
1010 | 320 | 192 | 160 | 160 | 96 |
1011 | 352 | 224 | 192 | 176 | 112 | < /TR>
1100 | 384 | 256 | 224 | 192 | 128 |
1101 | 416 | 320 | 256 | 224 | 144 |
1110 | 448 | 384 | 320 | 256 | 160 |
1111 | плохо | плохо | плохо< /TD> | плохо | плохо |
ПРИМЕЧАНИЯ. Все значения указаны в кбит/с.
V1 — MPEG версии 1
V2 — MPEG версии 2 и версии 2.5
L1 — уровень I
L2 — уровень II
L3 — Уровень III
"свободный" означает свободный формат. Если правильный фиксированный битрейт (такие файлы не могут использовать переменный битрейт) отличается от представленного в верхней таблице, он должен определяться приложением.Это может быть реализовано только для внутренних целей, так как сторонние приложения не имеют возможности узнать правильный битрейт. Однако это не невозможно сделать, но требует больших усилий.
"плохой" означает, что это недопустимое значение
Файлы MPEG могут иметь переменный битрейт (VBR). Каждый кадр может быть создан с разным битрейтом. Его можно использовать во всех слоях. Декодеры уровня III должны поддерживать этот метод. Его могут поддерживать декодеры уровней I и II.
Файловая структура — это то, что составляет файл. Файл — это меньшая форма файловой системы. Файл нельзя назвать «файлом», если он не структурирован. Структура файла важна для того, чтобы сделать этот файл доступным для чтения, потому что, если он неправильно структурирован, я уверен, что система не сможет его прочитать. И я думаю, что также существует стандартизация файловой структуры, поэтому файл PDF с именем A будет иметь ту же структуру, что и файлы B, C, D или другие файлы PDF. Файловая структура каждого типа файлов также отличается. Файлы .avi будут иметь другую файловую структуру с файлом .doc.
Кто не знает MP3? MP3 или, точнее, MPEG-1 или MPEG-2 Audio Layer III — это запатентованный формат кодирования цифрового звука, использующий форму сжатия данных с потерями. Это распространенный цифровой аудиоформат, широко используемый во всем мире. Когда мы говорим о мп3, он не может быть оторван от музыки. Я думаю, каждый день мы всегда слушаем музыку. И я думаю, вы уже знаете, что большая часть музыки закодирована в этом формате.
Аудиоформат MP3 был разработан Группой экспертов по движущимся изображениям (MPEG) как часть стандарта MPEG-1, а затем расширен в стандарте MPEG-2. Использование алгоритма сжатия с потерями предназначено для значительного сокращения объема данных, необходимых для представления аудиозаписи, и при этом для большинства слушателей по-прежнему звучит как точное воспроизведение исходного несжатого звука.
Файл MP3 состоит из нескольких кадров MP3, состоящих из заголовка и блока данных. Эта последовательность кадров называется элементарным потоком. Фреймы не являются независимыми элементами и поэтому не могут быть извлечены на произвольных границах фреймов. Блоки данных MP3 содержат сжатую аудиоинформацию, такую как частоты и амплитуды.
На диаграмме выше видно, что заголовок MP3 состоит из слова синхронизации, которое используется для идентификации начала допустимого кадра. За ним следует бит, указывающий, что это стандарт MPEG, и два бита, указывающие на то, что используется уровень 3. После этого значения будут отличаться в зависимости от файла MP3. Большинство файлов MP3 сегодня содержат метаданные ID3, которые предшествуют кадрам MP3 или следуют за ними, как показано на схеме.
Файл MP3 разделен на небольшие блоки кадров. Каждый кадр имеет постоянную продолжительность 0,026 с. Но размер одного кадра зависит от его битрейта. Например, песня со скоростью 128 кбит/с обычно занимает 417 байт, а песня со скоростью 192 кбит/с — 626 байт. Первые 4 байта каждого кадра — это заголовок кадра, а остальные — аудиоданные. Где TAG — это имя пространства данных в файле MP3, где может храниться некоторая текстовая информация, такая как название песни, исполнитель, жанр, альбом и другие.
Заголовок кадра состоит из информации о кадре (битрейт, стереофонический режим и т. д.), поэтому кадры являются независимыми элементами. Каждый из них может иметь свою характеристику. Он используется в файлах с переменным битрейтом, где каждый кадр может иметь разный битрейт. Это структура заголовка кадра. Каждая буква считается одним битом.
Подробности
A = синхронизатор кадров
B = идентификатор версии MPEG
C = уровень
D = защита CRC
E = индекс битрейта
F = Частотный индекс частоты дискретизации
G = заполнение
H = частный бит
I = канал
J = расширение режима
K = авторское право
L = исходный
M = Акцент
Вы можете найти более подробную информацию здесь.
^_^b
"чем тише вы становитесь, тем больше вы можете слышать.."
Форматы аудиофайлов
Аудиоуровень MPEG-1 3
Расширение имени файла
Тип интернет-СМИ
Поющие мелодии M8
Категория форматов файлов — v • e редактировать
В Википедии есть статья, связанная с:
MPEG-1 Audio Layer 3, также известный как MP3, представляет собой цифровой формат кодирования звука, использующий форму сжатия данных с потерями. Это распространенный аудиоформат для потребительского хранения аудио, а также де-факто стандарт кодирования для передачи и воспроизведения музыки на цифровых аудиоплеерах. MP3 — это аудиоформат, разработанный Группой экспертов по движущимся изображениям. Он был утвержден в качестве стандарта ISO/IEC в 1991 году.
Использование в MP3 алгоритма сжатия с потерями предназначено для значительного уменьшения объема данных, необходимых для представления аудиозаписи, и по-прежнему звучит как точное воспроизведение исходного несжатого аудио для большинства слушателей, но не считается высококачественным звуком. аудиофилы. Файл MP3, созданный с использованием средней скорости передачи данных 128 кбит/с, приведет к созданию файла, который обычно составляет около 1/10 размера файла компакт-диска, созданного из исходного аудиоисточника. Файл MP3 также может быть создан с более высокой или более низкой скоростью передачи данных, с более высоким или более низким результирующим качеством. Сжатие работает за счет снижения точности определенных частей звука, которые считаются за пределами слухового разрешения большинства людей. Этот метод обычно называют перцептивным кодированием. [1] Он внутренне обеспечивает представление звука в краткосрочном временном/частотном окне анализа, используя психоакустические модели для отбрасывания или уменьшения точности компонентов, менее слышимых человеческим слухом, и эффективной записи оставшейся информации. Это относительно похоже на принципы, используемые форматом сжатия изображений JPEG.
Кодирование аудио Редактировать
Стандарт MPEG-1 не включает точную спецификацию кодировщика MP3, но предоставляет примеры психоакустических моделей, петли скорости и т. п. в ненормативной части исходного стандарта. В настоящее время эти предлагаемые реализации довольно устарели. Разработчики стандарта должны были разработать собственные алгоритмы, подходящие для удаления частей информации из необработанного звука (точнее, его представления MDCT в частотной области). Во время кодирования берется 576 выборок во временной области, которые преобразуются в 576 выборок в частотной области. При наличии переходного процесса берется 192 выборки вместо 576. Это делается для ограничения временного распространения шума квантования, сопровождающего переходный процесс. (См. психоакустику.)
В результате доступно множество различных кодировщиков MP3, каждый из которых создает файлы разного качества. Сравнения широко доступны, поэтому потенциальному пользователю кодировщика легко найти лучший выбор. Следует иметь в виду, что кодировщик, способный кодировать при более высоких скоростях передачи данных (например, LAME), не обязательно так же хорош при более низких скоростях передачи данных.
С другой стороны, декодирование тщательно определено в стандарте. Большинство декодеров «совместимы с битовым потоком», что означает, что распакованный вывод, который они производят из данного файла MP3, будет таким же (в пределах заданной степени допуска округления), что и вывод, указанный математически в стандартном документе ISO/IEC ( ИСО/МЭК 11172-3).
Файл MP3 имеет стандартный формат, который представляет собой кадр, состоящий из 384, 576 или 1152 выборок (в зависимости от версии и уровня MPEG), и все кадры имеют связанную информацию заголовка (32 бита) и дополнительную информацию ( 9, 17 или 32 байта, в зависимости от версии MPEG и стерео/моно). Заголовок и дополнительная информация помогают декодеру правильно декодировать связанные данные, закодированные по методу Хаффмана.
Поэтому сравнение декодеров обычно основывается на том, насколько они эффективны в вычислительном отношении (т. е. сколько памяти или процессорного времени они используют в процессе декодирования).
Изменить качество звука
При кодировании аудио с потерями, например при создании файла MP3, существует компромисс между объемом используемого пространства и качеством звука в результате. Как правило, создателю разрешается устанавливать скорость передачи данных, которая указывает, сколько килобит может использовать файл в секунду звука, как при копировании компакт-диска в формат MP3. Использование более низкой скорости передачи данных обеспечивает относительно более низкое качество звука и создает меньший размер файла. Аналогичным образом, использование более высокой скорости передачи данных обеспечивает более высокое качество звука, но также приводит к увеличению размера файла.
Файлы, закодированные с более низким битрейтом, обычно воспроизводятся с более низким качеством. При слишком низкой скорости передачи в воспроизведении могут быть слышны «артефакты сжатия» (т. е. звуки, которых не было в исходной записи). Некоторый звук трудно сжать из-за его случайности и резких атак. Когда этот тип звука сжат, обычно слышны такие артефакты, как звон или предварительное эхо. Образец аплодисментов, сжатый с относительно низкой скоростью передачи данных, представляет собой хороший пример артефактов сжатия.
Помимо скорости передачи закодированного фрагмента аудио, качество файлов MP3 также зависит от качества самого кодировщика и сложности кодируемого сигнала. Поскольку стандарт MP3 допускает некоторую свободу в отношении алгоритмов кодирования, разные кодировщики могут иметь совершенно разное качество даже при одинаковой скорости передачи данных.
Простейший тип файла MP3 использует один битрейт для всего файла — это известно как кодирование с постоянным битрейтом (CBR). Использование постоянного битрейта делает кодирование проще и быстрее. Однако также возможно создавать файлы, в которых битрейт изменяется по всему файлу.Они известны как файлы с переменным битрейтом (VBR). Идея, стоящая за этим, заключается в том, что в любом аудиофрагменте некоторые части будет намного легче сжать, например, тишину или музыку, содержащую всего несколько инструментов, в то время как другие сжать будет сложнее. Таким образом, общее качество файла можно повысить, используя более низкую скорость передачи для менее сложных фрагментов и более высокую для более сложных частей. С некоторыми кодировщиками можно указать заданное качество, и кодировщик будет соответствующим образом изменять скорость передачи данных. Пользователи, которые знают конкретную «настройку качества», которая прозрачна для их ушей, могут использовать это значение при кодировании всей своей музыки, и им не нужно беспокоиться о проведении личных тестов прослушивания каждого музыкального произведения, чтобы определить правильную скорость передачи данных. р>
Во время прослушивания кодировщики MP3 с низким битрейтом работали значительно хуже, чем кодеры, использующие более современные методы сжатия (такие как AAC).
БитрейтПравить
В стандарте MPEG-1 Layer 3 указано несколько скоростей передачи данных: 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256 и 320 кбит/с. и доступные частоты дискретизации: 32, 44,1 и 48 кГц. Почти всегда используется частота дискретизации 44,1 кГц, потому что она также используется для аудио компакт-дисков, основного источника, используемого для создания файлов MP3. В Интернете используется большее разнообразие битрейтов. Скорость 128 кбит/с является наиболее распространенной, потому что она обычно обеспечивает адекватное качество звука в относительно небольшом пространстве. 192 кбит/с часто используется теми, кто замечает артефакты при более низких скоростях передачи данных. По мере увеличения пропускной способности Интернета и размеров жестких дисков файлы со скоростью передачи данных 128 кбит / с постепенно заменяются файлами с более высокой скоростью передачи данных, например 192 кбит / с, а некоторые кодируются до максимальной скорости MP3 320 кбит / с. Маловероятно, что более высокая скорость передачи данных будет популярна для любого аудиокодека с потерями, поскольку размеры файлов с более высокой скоростью передачи данных приближаются к размерам файлов без потерь, таких как FLAC.
Для сравнения, несжатый звук, хранящийся на компакт-диске, имеет битрейт 1411,2 кбит/с (16 бит/сэмпл × 44 100 сэмплов/с × 2 канала/1000 бит/килобит).
Некоторые дополнительные скорости передачи данных и частоты дискретизации были доступны в стандартах MPEG-2 и (неофициальном) MPEG-2.5: скорости передачи данных 8, 16, 24 и 144 кбит/с и частоты дискретизации 8, 11,025, 12, 16, 22,05 и 24 кГц.
Нестандартная скорость передачи данных до 640 кбит/с может быть достигнута с помощью кодировщика LAME и опции свободного формата, хотя немногие MP3-плееры могут воспроизводить такие файлы. Согласно стандарту ISO, декодеры должны декодировать только потоки со скоростью до 320 кбит/с.
Структура файлаПравить
Файл MP3 состоит из нескольких кадров MP3, состоящих из заголовка и блока данных. Эта последовательность кадров называется элементарным потоком. Кадры не являются независимыми элементами («хранилищем байтов») и поэтому не могут быть извлечены на произвольных границах фреймов. Блоки данных MP3 содержат (сжатую) аудиоинформацию с точки зрения частот и амплитуд. На диаграмме показано, что заголовок MP3 состоит из слова синхронизации, которое используется для идентификации начала допустимого кадра. За ним следует бит, указывающий, что это стандарт MPEG, и два бита, указывающие на то, что используется уровень 3; следовательно, MPEG-1 Audio Layer 3 или MP3. После этого значения будут различаться в зависимости от файла MP3. ISO/IEC 11172-3 определяет диапазон значений для каждого раздела заголовка вместе со спецификацией заголовка. Большинство файлов MP3 сегодня содержат метаданные ID3, которые предшествуют кадрам MP3 или следуют за ними; как показано на диаграмме.
ID3 и другие тегиПравить
Основные статьи: теги ID3 и APEv2
Тег в аудиофайле — это часть файла, которая содержит метаданные, такие как название, имя исполнителя, альбом, номер дорожки или другую информацию о содержимом файла.
По состоянию на 2006 год наиболее распространенными стандартными форматами тегов являются ID3v1 и ID3v2, а недавно представленный APEv2.
APEv2 изначально был разработан для формата файлов MPC. APEv2 может сосуществовать с тегами ID3 в одном файле или использоваться сам по себе.
Функции редактирования тегов часто встроены в MP3-плееры и редакторы, но также существуют специальные редакторы тегов.
Нормализация громкостиПравить
Поскольку уровни громкости различных аудиоисточников могут сильно различаться, иногда желательно отрегулировать громкость воспроизведения аудиофайлов таким образом, чтобы воспринималась постоянная средняя громкость. Идея состоит в том, чтобы контролировать среднюю громкость в нескольких файлах, а не пиковую громкость в одном файле. Эта нормализация усиления, хотя и похожа по назначению, отличается от сжатия динамического диапазона (DRC), которая представляет собой форму нормализации, используемую при мастеринге звука. Нормализация усиления может нарушить намерения артистов звукозаписи и звукоинженеров, которые намеренно устанавливают уровни громкости записываемого ими звука.
Альтернативные технологииПравить
Основная статья: Список кодеков
Существует множество других аудиокодеков с потерями и без потерь. Среди них mp3PRO, AAC и MP2 являются членами того же технологического семейства, что и MP3, и зависят от примерно аналогичных психоакустических моделей. Fraunhofer Gesellschaft также владеет многими основными патентами, лежащими в основе этих кодеков, а также другими патентами, принадлежащими Dolby Labs, Sony, Thomson Consumer Electronics и AT&T. Кроме того, существует формат файлов с открытым исходным кодом Ogg Vorbis, который был доступен бесплатно и представлял собой юридическую угрозу благодаря сообществу XIPH Open Source.
См. такжеПравка
§ Сжатие звука (данные)
§ Сравнение аудиокодеков
§ Цифровой аудиоплеер
§ LRC (формат файла)
§ Диджейский цифровой контроллер
СсылкиПравить
<р>1. ↑ Джаянт, Никил; Джонстон, Джеймс; Сафранек, Роберт (октябрь 1993 г.). «Сжатие сигнала на основе моделей человеческого восприятия». Протоколы IEEE 81 (10): 1385–1422. дои: 10.1109/5.241504.Читайте также: