Формат mp3 структура файла
Apple Lossless (также известный как Apple Lossless Encoder, ALE, или Apple Lossless Audio Codec, ALAC) — аудио кодек, разработанный Apple Inc, для сжатия цифровой музыки без потерь данных.
Формат сжатия AMR был разработан специально для использования в системах сотовой связи. Областью его применения является сжатие речевого аудио контента.
Monkey's Audio (только для Windows) считается одним из лучших аудио-кодеков без потерь для хранения музыки из-за своего эффективного соотношения размера итоговых файлов и скорости.
ATRAC — это система сжатия с потерями, основанная на психоакустических принципах. Она сжимает аудио компакт-диск до приблизительно 1/5 от оригинала с неощутимыми потерями качества звука.
Кодек CELT представляет собой алгоритм для сжатия аудио данных. Как и MP3, Vorbis и AAC он подходит для передачи музыки в высоком качестве. В отличие от этих форматов, CELT имеет ещё и очень маленькую задержку, меньшую, чем даже Speex, GSM или G.729.
LossyWAV является бесплатным форматом сжатия с потерями. Но по сути — это препроцессор для PCM-аудио, хранимого в WAV-контейнерах.
MPEG-1 Audio Layer I (сокращенно MP1) является одним из трех форматов включенных в MPEG-1 стандарт. Несмотря на то, что он поддерживается многими медиа плеерами, кодек уже сильно устарел и заменен кодеками MP2 и MP3.
MP2 до сих пор используется в радиовещательной индустрии для спутниковой трансляции Цифрового Видео Вещания (Digital Video Broadcast) и Цифрового Аудио Вещания (Digital Audio Broadcast).
Формат иногда путают с MPEG-3, но MP3 предназначен для сжатия только аудиоинформации и полное название звучит как MPEG Audio Layer-3.
В 2004-м, институтом Fraunhofer IIS было опубликовано обратно совместимое расширение для MP3. Файлы MP3 Surround обепечивают высокое качество на звуке 5.1 при помощи новых декодеров.
Это расширения файлов для формата-контейнера MPEG-4, который может включать в себя все разновидности мультимедиа (видео, натуральное и синтетическое аудио, 2D и 3D графику, анимированные аваторы и т.д.).
Musepack — схема сжатия с потерями, созданная немецким программистом — Эндри Бушманом (Andree Buschmann).
Формат Ogg vorbis разработан компанией Xiphophorus. На этом же сайте можно найти исходные коды проекта. Он является частью проекта Ogg, предусматривающего создание полностью открытой мультимедиа системы.
OptimFROG — это алгоритм сжатия без потерь, главная цель которого — максимально уменьшить размер аудио файлов. Это чем-то напоминает ZIP сжатие, но этот алгоритм высоко специализирован для аудио данных.
Opus является абсолютно открытым, свободным от лицензионных отчислений, крайне универсальным аудио кодеком.
RealMedia — проприетарный стандарт, рассчитанный на потоковое вещание и на формат медиафайлов, принадлежащий фирме "RealNetworks Products and Services".
Speex является свободным от патентов форматом для сжатия аудио, разработанным для передачи речи, а также для использования в открытом программном обеспечении (например, в направлении VoIP).
TAK — это сжатие аудио информации без потерь, которое обеспечивает эффективность APE и скорость декодирования FLAC.
Проприетарный формат, который был создан на замену MP3, но так и не получил должного развития из-за своей собственнической природы.
Формат WAV является, пожалуй, наиболее обычным форматом хранения аудио. Его проще всего использовать для обработки и поддерживается он чуть ли не всеми аудио плеерами.
WavPack является полностью открытым форматом аудио сжатия без потерь, высокого качества с потерями и уникального гибридного режима.
Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало — решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.
Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).
В данной статье мы не будем подробно останавливаться на извлечении ID3v2 тегов – это можно вынести в отдельную статью, так как там есть различные нюансы. А так же на фрагментах заголовков, которые практически не используются в настоящее время (например, часть Emphasis заголовка mp3-фрейма). Так же мы не рассматриваем структуру самих аудиоданных — тех самых, которые слышим из колонок.
ID3 (от англ. Identify a MP3) — формат метаданных, наиболее часто используемый в звуковых файлах в формате MP3. ID3 подпись содержит данные о названии трека, альбома, имени исполнителя и т. д., которые используются мультимедиапроигрывателями и другими программами, а также аппаратными проигрывателями, для отображения информации о файле и автоматического упорядочивания аудиоколлекции.
Существует две абсолютно разных версии ID3-данных: ID3v1 и ID3v2.
ID3v1 – имеет фиксированный размер в 128 байт, которые дописываются в конец mp3-файла. Там можно хранить: название трека, исполнитель, альбом, год, комментарий, номер трека (для версии 1.1) и жанр.
Довольно быстро всем стало понятно, что 128 байт – очень уж небольшое место для хранения таких данных. И поэтому, со временем, появилась и успешно используется вторая версия данных – ID3v2.
В отличии от первой версии, теги v2 имеют переменную длину и размещаются в начале файла, что позволяет поддерживать потоковое воспроизведение. (Формат ID3v2.4 позволяет так же хранить данные и в конце файла).
Данные ID3v2 состоят из заголовка и последующих фреймов ID3v2. Например, в версии ID3v2.3 существует более 70 типов фреймов.
- маркер всегда равен ‘ID3’
- В данный момент имеются три версии ID3v2.2, ID3v2.3 и ID3v2.4
Версия v2.2 считается устаревшей.
v2.3 – самая популярная версия.
v2.4 – набирает популярность. Одно из отличий от v2.3 в том, что позволяет использовать кодировку UTF-8 (а не только UTF-16) - Флаги. В настоящее время используются только три (5,6,7) бита:
bin: %abc00000
a ‘unsynchronisation’ – используется только с MPEG-2 и MPEG-2.5 форматами.
b ‘Extended header’ – указывает на наличие расширенного заголовка
с ‘Experimental indicator’ – эксперементальный индикатор - Длина. Особенность указания длины данных ID3v2 в том, что в каждом байте 7-й бит не используется и всегда установлен в 0.
В данном случае вместе с заголовком ID3v2 (10 байт) – данные ID3v2 занимают 1024 байта.
После ID3v2-заголовка идут собственно теги. Подробный разбор чтения тегов ID3v2, как сказано выше, я решил не включать в эту статью.
Теперь у нас есть информация о наличии и длине тегов ID3 и мы можем приступать в разбору mp3-фрейма и понять-таки – где же хранится длительность. А заодно понять и всё остальное.
Весь mp3-файл состоит из фреймов, которые можно извлекать только последовательно. Фрейм содержит в себе заголовок и аудио-данные. Поскольку мы не ставим себе целью написать прошивку для магнитофона – нас интересует именно заголовок фрейма.
О нем подробнее (куча таблиц и сухой информации)
Размер заголовка – 4 байта.
- 5 Маркер – 11 бит, заполненные единицами (Frame sync)
- 11 Индекс версии MPEG (Audio version ID)
- 14 Индекс версии Layer (Layer index)
Кстати, MP3 – это MPEG-1 Layer III - [15] Бит защиты (Protection bit)
1 – нет защиты
0 – заголовок защищен 16-бит. CRC (следует за заголовком) - 18 Индекс битрейта (Bitrate index)
В таблице хранятся значения битрейта в килобит/сек. Однако в данном формате подразумевается, что 1 килобит = 1000 бит, а не 1024. Таким образом 96 Кбит/сек = 96000 бит/сек. - 20 Индекс частоты дискретизации (Sampling rate index)
- [22] Бит смещения (Padding bit)
Если он установлен, то данные смещаются на 1 байт. Это важно для расчета размера фрейма. - [23] Бит private (только для информации)
- 24 Режим канала (Channel mode)
- 26 Расширение режима канала. (Mode extension) Используется только с Joint stereo
- [28] Копирайт (Copyright bit) – только для информации
- [29] Оригинал (Original bit) – только для информации.
- 31 Акцент (Emphasis) – в данный момент практически не используется.
Режимы сжатия данных или какой бывает битрейт
Существует 3 режима сжатия данных:
CBR (constant bitrate) – постоянный битрейт. Не меняется на всем протяжении трека.
VBR (variable bitrate) – переменный битрейт. При этом сжатии битрейт постоянно меняется на протяжении трека.
ABR (average bitrate) – усредненный битрейт. Это понятие используется только при кодировании файла. На «выходе» получается файл с VBR.
Если файл закодирован с постоянным битрейтом – то мы уже можем наконец-то! получить длительность нашего трека по следующей формуле:
Например, файл имеет размер 350670 байт. Есть ID3v1 теги (128 байт) и ID3v2 теги (1024 байта). Битрейт = 96. Следовательно размер аудиоданных равен 350670 – 128 – 1024 = 349518 байт.
Длительность = 349518 / 96000 * 8 = 29,1265 = 29 секунд
Необходимо пояснить – как определить режим сжатия. Всё просто. Если файл сжат с VBR – то добавляется VBR-заголовок. По его наличию мы и можем понять, что используется переменный битрейт.
Есть два вида заголовков: Xing и VBRI.
Xing размещается со смещением от начала первого mp3-фрейма в позиции, согласно таблице:
Например: у нас ID3v2 тег занимает 1024 байта. Если наш mp3-файл имеет режим канала «Стерео» — то заголовок VBR Xing будет начинаться со смещения 1024 + 32 = 1056 байт.
Заголовок VBRI всегда размещается со смещением +32 байта от начала первого mp3-фрейма.
Первые четыре байта в обоих заголовках содержат маркер ‘Xing’ или ‘Info’ для Xing. И ‘VBRI’ для VBRI.
Эти VBR заголовки имеют переменную длину и содержат различную информацию о кодировании файла. Подробнее о структуре заголовков VBR (и не только) можно почитать, например, тут.
Я же расскажу только о том, что нас интересует в данный момент. А именно – количество фреймов (Number of Frames). Это число длиной 4 байта.
В заголовке Xing оно содержится по смещению +8 байт от начала заголовка. В VBRI +14 байт от начала заголовка.
Используя таблицу Сэмплов на фрейм (Sampler Per Frame) мы можем получить длительность mp3-файла, закодированного с переменным битрейтом.
Например: из заголовка VBRI получили количество фреймов 1118, сэмплов на фрейм = 1152. Частота дискретизации = 44100.
Длительность = 1118 * 1152 / 44100 = 29.204 = 29 секунд.
На этом на сегодня всё. Если был кому-то полезен — спасибо.
Для тех, кто захочет немедленно поковырять внутренности mp3 — Тут лежат скрипт на php, которые я писал для себя одновременно с данной статьей и четыре небольших mp3-файла для теста.
В этой статье приводится спецификация заголовка MP3 формата. Перевод с английского.
Определенного заголовка у файла нет, вместо этого есть заголовок у каждого фрейма. Фрейм — часть аудио данных со своим заголовком. Т.е. в файле фреймов может присутствовать хоть тысяча, хоть миллион и у каждого из них будет свой заголовок. В файлах, закодированных уровнем I/II (MPEG Audio Layer I/II), фреймы абсолютно независимы и могут воспроизводиться отдельно друг от друга. После появления уровня III (MPEG Audio Layer III), фреймы стали зависимыми и теперь, чтобы воспроизвести один фрейм может потребоваться до 9 других фреймов (это произошло из-за использования «резервуара байтов» — некоего буфера).
Размер фрейма 32 бита (4 байта). Первые 12 бит (или первые 11 бит для MPEG 2.5 расширения) заголовка фрейма всегда установлены в 1 и называются «frame sync».
Далее — таблица, соотносящая биты с их значениями.
Примечания: Все значения V1 — MPEG Версия 1 V2 — MPEG Версия 2 и Версия 2.5 L1 — Layer I L2 — Layer II L3 — Layer III
«свободный» означает свободный формат. Свободный битрейт должен быть постоянным (CBR) и должен быть ниже максимально дозволенного. Со стороны декодера поддержка потока данных со свободным битрейтом не требуется. «неверный» означает, что значение за пределами дозволенного.
В MPEG файлах также может быть и переменный битрейт (VBR). В таком случае, каждый фрейм может быть создан с различным битрейтом. Это может быть использовано во всех уровнях. Декодеры Layer III должны поддерживать этот метод. Декодеры Layer I и Layer II могут поддерживать это.
Для Layer II могут быть некоторые недозволенные комбинации битрейта и режима. Вот список этих комбинаций:
Расширение режима используется для соединения информации, которая не используется для стерео эффекта, таким образом уменьшается количество требуемых битов. Эти биты динамически определяются кодером в режиме Joint Stereo, и Joint Stereo может меняться в разных фреймах и даже включаться или выключаться.
Полный диапазон частоты звучания в MPEG файле разделена на подмножества. Всего 32 таких подмножества. Для уровня I и II эти два бита определяют подмножества, где применено Intensity stereo. Для уровня III эти два бита определяют, что за тип Joint Stereo используется (Intensity stereo или m/s stereo). Диапазон частоты определен внутри декодирующего алгоритма.
25 лет назад, в июле 1995 года, представители немецкого Института интегральных микросхем Фраунгофера (Fraunhofer-Institut für Integrierte Schaltungen, сокращенно Fraunhofer IIS, FIIS) приняли важное решение: использовать расширение .mp3 для обозначения нового стандарта кодирования данных. Дату этого события и принято считать днем рождения MP3.
Формат был создан для передачи аудиофайлов по медленным сетям коммуникаций, изначально — телефонным. В 1995 году существовали и другие стандарты, но с их помощью звуковые файлы нельзя было сжимать настолько же эффективно, как это позволял делать MP3. Он сделал возможным бурное развитие медиаиндустрии, включая разработку цифровых плееров.
Когда горы были высокими, а компьютеры медленными…
На самом деле, 25 лет назад появилось именно расширение для файлов, закодированных по новому стандарту. А вот его разработка стартовала гораздо раньше.
В 1977 году молодой ученый Карлхайнц Бранденбург из института Эрлангена-Нюрнберга им. Фридриха-Александра ( Friedrich Alexander Universität, или FAU) занялся поиском методов сжатия аудио. Через пять лет его научный руководитель попросил помочь запатентовать технологию передачи музыкальных данных через телефонные линии. Сейчас это звучит странно, но в патентном бюро им отказали, объяснив отказ невозможностью реализации технологии.
Еще через три года институт, где работал ученый, получил мощные компьютеры. И у исследователей, которые имели доступ к этим машинам, появилась возможность проводить сложные вычисления, включая эксперименты со звуком. Бранденбург достиг определенных успехов в сжатии звука и в итоге получил патент на свое изобретение.
По рассказам самого Бранденбурга, он экспериментировал с одной и той же песней — «Tom's Diner» Сюзанны Веги. Это была его любимая композиция, которая осталась таковой даже после прослушивания трека около 1000 раз. В итоге удалось найти приемлемый способ сжатия аудио, выбросив все то, что человеческое ухо просто не способно воспринять. Качество от этого страдает не сильно, а вот файл на выходе получается очень небольшим в сравнении с результатами других способов сжатия.
Путь к успеху
Источник: Википедия
В 1992 году технология MPEG Layer 3 все еще не была популярной. Тем не менее, ее подготовили к коммерческому использованию, она также стала стандартом ISO. На тот момент в ходу был MPEG Layer 2, который считали отличной технологией. Бизнес не рассматривал MP3 как перспективную альтернативу существующим решениям.
Для того, чтобы решить эту проблему и обратить внимание пользователей на новый стандарт, создатель MP3 с коллегами решил провести эксперимент по передаче аудиофайла по интернету. Технология передачи была разработана, и эксперимент прошел удачно. В опыте приняла участие компания Telos Systems из Кливленда.
Но, как оказалось, все это были мелочи. Настоящий успех пришел позже, после того как разработчики выложили кодировщик в сеть. Он позволял закодировать в MP3 аудио продолжительностью всего в минуту. Но один из энтузиастов, скачавших кодировщик, смог взломать утилиту и получил возможность сжимать аудио любой длины.
После этого MP3 очень быстро стал востребованным форматом, поскольку он позволял интернет-сообществу передавать композиции по dial-up. Затем появился Napster, а вместе с ним — так называемое цифровое пиратство. Музыканты стали распространять свои записи по сети, любители музыки беспрепятственно обменивались любой музыкой в любом объеме, сколько позволяла сеть. В 2001 году Стив Джобс представил iPod, который был способен хранить рекордные 1000 музыкальных композиций.
После музыкальная индустрия стала бороться со свободным обменом музыкой, что спровоцировало рост популярности стриминговых музыкальных сервисов. И все это стало возможным благодаря изобретению Карлхайнца Бранденбурга и его коллег.
Чем занимается Бранденбург сейчас?
После 20 лет работы в своем институте Карлхайнц Бранденбург ушел на пенсию. Исследователь не забросил любимое дело, он продолжает работать со звуком, только направление сменил. Ученый основал компанию Brandenburg Labs и работает на созданием новой технологии PARty.
По словам разработчиков, она позволяет глушить определенные звуковые частоты для того, чтобы пользователь лучше слышал другие. Это умное шумоподавление, когда человек, который находится рядом с источником шума, может без проблем позвонить по телефону и не кричать в трубку — будет слышно как его, так и собеседника. Возможно, через годик-другой мы услышим о новой прорывной технологии изобретателя MP3.
What would whip the llama’s ass?
Да, а вы знаете, что Winamp сейчас доступен бесплатно? Если не знали, то теперь — да. Наслаждайтесь.
Общие сведения
Формат иногда путают с MPEG-3, но MP3 предназначен для сжатия исключительно аудиоинформации и полное название звучит как MPEG Audio Layer-3. MPEG-3 же предназначался для использования в системах телевидения высокой четкости (HDTV) с битрейтом потока 20-40 Мбит/с, но позже стал частью стандарта MPEG-2 и отдельно теперь не упоминается.
Нельзя сказать, что этот формат аудиосжатия легко пробился к массовому пользователю. На начальном этапе раскрутки Fraunhofer — институт, создавший МP3, едва не убил собственное детище не в меру поспешной жадностью (кстати, многие разработчики новых аудиоформатов, совершают ту же ошибку), но, увидев, что никто не желает платить деньги за кота в мешке, сделала единственно верный шаг — сделала этот формат открытым и бесплатным. Сказать, что после этого МP3 стал популярен — значит ничего не сказать. Это был взрыв популярности! Этот аудиоформат столь резво пошедший в массы обладал по тем временам нереально высоким коэффициентом сжатия звука при достаточно высоком качестве звука и с легкостью покорял любого пользователя, который любил слушать музыку. С молниеносной быстротой появилась целая индустрия: МP3-сайты, которые занимались только МP3, производители программных и аппаратных проигрывателей музыки в МP3 формате, нелегальные распространители музыкальных композиций, более известные как пираты, первые додумавшиеся до выпуска дисков типа «все песни этой группы на одном диске». Невероятно возрос спрос на пишущие CD-R дисководы и чистые диски для них. МP3 теперь всюду — это признанный звуковой формат. Его используют в играх, кодеки встраивают в операционные системы. Вот уже несколько лет МP3 на вершине популярности…
Но вот, эйфория, вызванная его появлением, потихоньку прошла, и стало ясно, что МP3 вовсе не безупречен. Несмотря на высокую степень сжатия, размер файлов все же слишком велик, чтобы сделать МP3 по-настоящему сетевым форматом, а 128 kbps, столь любимый пиратами и народом, дает настолько низкое качество, что огрехи при воспроизведении слышат не только продвинутые музыканты и меломаны, но и вполне рядовые пользователи. В свете этого возникла нужда в новых альтернативных более прогрессивных алгоритмах компрессии звука. И такие алгоритмы появились очень быстро. Некоторые из них начали разрабатываться практически одновременно с МP3 (например VQF), но по каким-то причинам вышли позже и упустили пальму первенства, некоторые алгоритмы разрабатывались и позиционировались разработчиками уже как замена МP3 (семейство MPEG-2 ААС). Тем не менее, эти алгоритмы по своим возможностям и качеству во многом превосходят MP3.
MP3Pro
Расширенная версия от Coding Technologies, которая использует Spectral Band Replicaton (отражение спектральной полосы частот) — SBR, чтобы повысить его эффективность для битрейтов ниже 96 kbps stereo. Не будучи частью MPEG стандарта, поддержка mp3PRO обеспечивается только некоторыми программными и аппаратными продуктами, например Thomson демо плеер/кодировщик и input plugin для Winamp, MusicMatch JukeBox, Nero, dbPowerAMP, JetAudio, Steinberg myMP3PRO, Impload, Spacial Audio, Audion 3, RCA Lyra портируемый и DVD плеер. Это возможно не изменится в будущем, тем не менее некоторые слуховые тесты показали хорошую производительность на низких битрейтах по сравнению с другими кодеками.
Читайте также:
- Как сделать гиперссылку в powerpoint
- Как вставить картинку без фона в автокад
- Добавить структуру в массив 1с
- Вместо браузера белый экран obs
- Rubetek программа для компьютера