Кодирование звука в формате мр3 сообщение

Обновлено: 04.07.2024

Одной из основных задач информатики является представление данных в виде удобном для хранения и передачи. Эти данные могут быть разного типа – звуковые, текстовые, графические и т.д. В этой статье мы расскажем про кодирование звуковой информации. Из этой статьи Вы узнаете основные принципы и определения. Также после прочтения сможете посчитать объем аудио файла. Читайте!

Основные определения

Для того чтобы разобраться в теме надо знать, что представляет собой звуковая информация (звук).

Звук – это непрерывная аналоговая волна, которая распространяется в окружающей среде. В роли среды может выступать воздух, жидкость, твердое тело, электричество и т.д.

Звук, как непрерывную волну, характеризуют две характеристики – частота и амплитуда.

От амплитуды зависит громкость аудио сигнала . Чем выше амплитуда, тем громкость больше.

Частота же характеризует тональность аудиоинформации . Чем больше частота, тем тональность выше. Человеческий слух улавливает волны от 20 Гц до 20 кГц. 1 Гц равен 1 колебанию аудио сигнала в секунду.

Представление и кодирование звуковой информации в компьютере

Для представления и кодирования звука используются специальное оборудование и программы. Рассмотрим весь процесс более подробно.

  1. Аудиоинформация, поступая из окружающей среды (например, по воздуху), преобразуется в электрический сигнал. Для этого используется такое устройство, как микрофон.
  2. После этого звук поступает на АЦП (аналого-цифровой преобразователь), где подвергается оцифровке.
  3. На последнем этапе информация (уже в двоичном виде) кодируется при помощи специальной программы – аудиокодека. На выходе получается файл в специальном формате (например, mp3), который можно хранить, воспроизводить и передавать.

Кодирование звуковой информации

Наибольший интерес представляет процесс оцифровки, также называемым аналого-цифровым преобразованием. В результате него аналоговый сигнал заменяется на цифровой.

Основной принцип аналогово-цифрового преобразования заключается в том, что через равные промежутки времени измеряется амплитуда волны. Также этот процесс называется дискретизация.

Дискретизация – это процесс в результате, которого непрерывная функция представляется в виде дискретной последовательности её значений. Схематично дискретизацию можно представить так:

Кодирование звуковой информации

Дискретизация характеризуется двумя такими величинами, как:

  • Частота шага по времени;
  • Шаг квантования.

Первая величина отображает, как часто берутся дискреты и измеряется в Герцах (количество измерений за одну секунду). Частота шага по времени находится по теореме Котельникова.

Шаг квантования характеризуется количеством уровней , до которых округляются величины амплитуды волны.

Количество уровней (ступенек) до которых округляются значения сигнала, зависит от аналого-цифрового преобразователя. На данный момент используются 16, 32 и 64 битные устройства.

Количество бит, затрачиваемое для номеров уровней, называется глубиной кодирования звуковой информации.

Глубина кодирования связано с количеством уровней по формуле:

Где i разрядность АЦП в битах.

Чем чаще берутся дискреты за единицу времени и больше глубина кодирования, тем выше качество звуковых данных на выходе и дороже АЦП.

Расчет объема аудио файла

  • N – длительность звучания в секундах;
  • K – разрядность АЦП (глубина кодирования) в битах;
  • F – частота взятия дискрет в герцах;
  • Z – количество каналов ( 1- моно, 2 — стерео).

Пример: рассчитать объем аудио файла со следующими характеристиками – моно звучание, частота дискретизации 8 кГц, глубина — 8 бит (телефонная связь) и длительностью 60 секунд.

​ \[V = 60*1*8000*8=3840000 \ бит \] ​

Форматы аудио

Форматов для хранения аудио много, однако, все они делятся на две большие группы в зависимости от того, какой из методов сжатия используется – LOSELESS или LOSSY.

  1. LOSELESS – метод сжатия без потерь. Качество звуковой информации остается без изменений, однако за него приходится платить большим объемом компьютерной памяти. Используется для хранения музыки и других данных, где важно качество. Форматы, которые основаны на данном методе сжатия: FLAC, APE, TAC, ALAC и другие. На данный момент зарабатывают все большую популярность в связи с увеличением дискового пространства.
  2. LOSSY – сжатие с потерями. При таком методе файл сохраняются с искажениями относительно оригинала. В основном эти искажения не воспринимаются человеческим слухом, а также не замечаются при плохом аудио оборудовании. LOSSY позволяет существенно сэкономить дисковое пространство. На данный момент этот метод сжатия является доминирующим.

Форматы кодирования использующие алгоритмы LOSSY:

  • MP3 (MPEG-1,2,2.5) – самый популярный аудио формат. Проигрывается на всех аудио и видео системах, по умолчанию поддерживается всеми операционными системами. Искажения заметны на высокоточной дорогостоящей аппаратуре.
  • AAC – формат, который разрабатывался и позиционировался, как приемник mp3. Не получил широкого распространения. Преимущества перед mp3: большая гибкость кодирования, возможность использовать до 48 звуковых каналов.
  • HE-AAC (High-Efficiency Advanced Audio Coding) – используется в цифровом радио и телевиденье.

Заключение

Появившись ещё в середине 1990-х, формат MP3 быстро занял лидирующие позиции и, похоже, до сих пор не собирается их сдавать. Мало кто из пользователей компьютеров и разнообразных устройств для воспроизведения звука хорошо представляет себе, что такое MP3 "изнутри". Попробуем разобраться.

Что такое MP3?

MP3 - формат сжатия звука с потерями. Разработан в Германии институтом Фраунгофера в 1994-м году. Если быть точнее - в 1994-м появился первый кодировщик L3Enc. Самый популярный формат сжатия звука на момент написания статьи (обновление: и семью годами позже, в 2017-м :).

Из чего состоит MP3?

Технически MP3 называется MPEG-1 Audio Layer 3 и состоит из нескольких подформатов. Каждый подформат рассчитан на свою частоту дискретизации и битрейт. Ранее было принято считать, что MP3, закодированный на битрейте 128кбит, практически неотличим от AudioCD (это, безусловно, не так). Сегодня таковым "порогом" считается 192кбит (речь идёт о среднестатистическом слушателе). Если "подняться" до 256кбит, слепые тесты уже проваливают профессиональные эксперты, несмотря на то, что опыты проводятся на качественном оборудовании и в соответствующих помещениях. 320кбит считается полностью неотличимым от оригинала на слух (напомню, речь идёт о формате AudioCD - т.е., 16бит 44.1кГц). Как человек, долго работающий с музыкой, я эту информацию могу лишь дополнительно подтвердить собственным (более чем двадцатилетним) опытом работы с MP3.

Принципы кодирования MP3

Довольно сложно объяснить все принципы кодирования формата, я попытаюсь сделать это "на пальцах". Кодек берёт звуковой материал и, основываясь на выходных данных (в основном, на битрейте) начинает его сжимать. Сначала производится фильтрация высоких частот (для 128кбит это может быть диапазон, начиная от 14-15кГц, для 256кбит - 19-20кГц и т.д.). После того, как часть по факту неслышимой информации убрана из файла, кодек строит т.н. "психоакустическую модель", на основании которой убирает из звука неслышимые составляющие. Затем информация "ужимается" в нужный битрейт. Понятное дело, чем ниже битрейт - тем более слышимы "неслышимые" составляющие, как бы абсурдно это ни звучало.

Фактически, качество звучания выходного файла зависит не только от выбранного битрейта, но и от программы-кодека. Существуют десятки кодеков, наиболее заметный по популярности и качеству - LAME, очень хорош и сам оригинальный от Фраунгофера. В случае использования других кодеков есть вероятность нарваться на не очень качественный результат кодирования, поскольку какого-либо стандарта нет - есть только описание принципов и рекомендации. Поэтому, каждая программа кодирует звук по-своему.

С проигрывателем всё проще - надо лишь развернуть готовый поток согласно информации, закодированной в нём. Тем не менее, при декодировании тоже могут возникать неприятные нюансы. К примеру, некогда популярнейший проигрыватель Winamp в большинстве своих начальных версий имел очень низкое качество звука - видимо, из-за чрезмерно усердной "оптимизации" кода под не слишком резвые компьютеры эпохи конца 1990-х.

MP3 с битрейтом 128кбит, как правило, без проблем отличим от оригинала на хорошей аппаратуре. Будет слышно и урезание высоких частот, и некоторые "булькающие" призвуки на ВЧ при насыщенном звуке. С повышением битрейта, качество кодирования растёт катастрофически: уже к 160кбит результат на слух более чем удовлетворяющий, не говоря уж о 192кбит. Естественно, при хорошем кодеке и правильно настроенных параметрах кодирования.

Есть, конечно, и другие способы применения MP3 - например, кодирование для передачи в реальном времени через интернет. Здесь качество не играет особенной роли - важен размер получаемого файла.

Режимы кодирования

У MP3 на данный момент три режима кодирования, отличающиеся качеством материала на выходе.

CBR (constant bitrate, постоянный битрейт)

Изначально использующийся режим, постоянный битрейт на всём протяжении файла. Из достоинств имеет разве что точно прогнозируемый объём выходного файла.

VBR (variable bitrate, переменный битрейт)

Появившийся позднее и с успехом развившийся режим. Суть состоит в том, что звуковой материал изначально имеет разную насыщенность на разных участках времени. Исходя из этого, можно варьировать битрейт, сохраняя при этом одинаковое качество. Например, зачем кодировать тишину на битрейте 128кбит, если для этого можно использовать минимальные 32кбита (для 44.1кГц)? Недостатком такого режима является невозможность прогнозирования объёма выходного файла. Впрочем, вряд ли можно назвать это существенным недостатком на фоне очевидных достоинств.

ABR (average bitrate, средний битрейт)

ABR является "соединением" CBR и VBR. Имеется возможность задать некий "средний" битрейт, а кодек будет использовать переменный битрейт, чтобы "вписаться" в заданные рамки. Результат кодирования в режиме ABR будет несколько лучше, чем у CBR, однако музыкальный материал будет закодирован с разным качеством на разных участках. Тем не менее, как и в случае с CBR, будет легко прогнозировать объём файла.

Режимы управления кодированием

Stereo (стерео)

Двухканальное кодирование. Каналы стереосигнала кодируются независимо друг от друга, но распределение бит под результат может варьироваться в зависимости от насыщенности в каждом канале. Режим используется в основном на битрейтах от 256кбит.

Dual channel (двухканальный)

Кодирование каналов независимо друг от друга, с выделением постоянного битрейта под каждый канал. Например, если выбран битрейт 256кбит, то под каждый канал определяется строго 128кбит. Режим практически не используется, а в популярном кодеке LAME даже и не поддерживается.

Joint stereo (объединённое стерео)

Часто используемый режим для кодирования на средних и низких битрейтах (меньше 256кбит). Состоит из нескольких подрежимов. В основном базируется на том, что на обоих каналах очень много одинаковой информации (то есть, каналы типичного музыкального файла отличаются друг от друга не на 100%). При этом, одинаковую информацию можно закодировать с битрейтом повыше, а разность между каналами, которая обычно невелика, ужать получше. Из сказанного вытекает очевидный недостаток режима: если каналы всё же полностью отличаются друг от друга, никакого выигрыша в качестве по сравнению с тем же стереорежимом не получится. Однако, в большинстве случаев joint stereo позволяет получить лучшее звучание на низких битрейтах.

Mono (моно)

Используется для кодирования моносигналов.

Заключение

Пожалуй, единственным серьёзным недостатком MP3 является то, что технически стандарт ограничен двумя каналами. Для меня это, впрочем, не является недостатком, поскольку я не работаю более чем с двумя каналами одновременно. В 2010-м году исчез и второй крупный недостаток: патент.

У MP3 немного реальных конкурентов, наиболее заметные из них - AAC и Ogg Vorbis. AAC защищён патентом, в то время как Ogg Vorbis - свободно реализуемый проект. По сути, из преимуществ у этих кодеков - разве что возможность сохранять более двух каналов в потоке и улучшенное качество звука на низких битрейтах (на высоких различия стираются). По популярности этим кодекам далеко до MP3, да и меломаны всё чаще смотрят в сторону форматов сжатия без потерь (навроде FLAC), поскольку устройства хранения данных эволюционируют гигантскими темпами и уже можно позволить себе хранить аудио в сжатом без потерь варианте. MP3 же остаётся "проверенной рабочей лошадкой" для бытового применения и обеспечивает отличное качество звучания, если использовать нормальный кодек с правильными настройками сжатия.


Организуя свою коллекцию цифровой музыки, можно утонуть в разнообразии форматов аудиофайлов. Почти каждый слышал об MP3, но что такое OGG, AIFF или MQA?

Если по прочтении списка у вас возникло подозрение, что все эти форматы для получения таких шикарных аббревиатур учились в разных университетах, мы поможем развеять его. В этом материале будет прояснена суть некоторых популярных музыкальных форматов, разница между ними и то, почему это важно знать.

Что бы вы ни слушали – MP3-файлы с низким битрейтом, чуть более качественные треки в AAC или Hi-Res-аудио во FLAC или WAV – настало время разобраться в том, что именно вы получаете в каждом случае и как выбрать оптимальный формат.

Давайте оценим плюсы и минусы каждого из них.

Краткий обзор форматов файлов и кодеков


Чтобы не ходить вокруг да около, вначале мы приведем краткую памятку по всем форматам файлов и различиям между ними. Если захотите узнать больше, ниже вы найдете более подробное описание различий в размерах, качестве звука и совместимости.

AAC (не является форматом Hi-Res-аудио). Ставшая популярной благодаря Apple альтернатива формату MP3. Со сжатием и потерями, но с более высоким качеством звука. Используется для скачивания с iTunes и трансляции с Apple Music.

AIFF (Hi-Res). Альтернатива WAV от Apple с более полными метаданными. Не особенно популярный формат без сжатия и потерь с файлами большого размера.

DSD (Hi-Res). Однобитный формат, применяемый в Super Audio CD. Существует в вариантах с частотой дискретизации 2,8 МГц, 5,6 МГц и 11,2 МГц. Из-за использования кодека высокого качества в настоящее время не применяется для стриминга. Формат без сжатия.

FLAC (Hi-Res). Формат со сжатием без потерь с поддержкой частот дискретизации, совместимых с Hi-Res, и хранением метаданных; размер файлов вдвое меньше, чем у WAV. Благодаря отсутствию лицензионных отчислений считается лучшим форматом для скачивания и хранения альбомов в Hi-Res-аудио. Его главный недостаток – отсутствие поддержки устройствами Apple (и, следовательно, несовместимость с iTunes).

MP3 (не является форматом Hi-Res-аудио). Популярный формат со сжатием и потерями с малым размером файла и далеко не самым высоким качеством звучания. Удобен для хранения музыки на смартфонах и плеерах iPod.

MQA (Hi-Res). Формат со сжатием для хранения Hi-Res-файлов в более удобной для стриминга форме. Используется сервисом Tidal Masters для трансляций Hi-Res-аудио.

OGG (не является форматом Hi-Res-аудио). Иногда называется полным именем – Ogg Vorbis. Альтернатива MP3 и AAC с открытым кодом, не подпадающая под действие патентов. Этот формат с битрейтом 320 кбит/с используется в трансляциях Spotify.

WAV (Hi-Res). Стандартный формат, в котором записаны все CD. Отличное качество звука, но огромный размер файлов из-за отсутствия сжатия. Слабая поддержка метаданных (обложек, названий песен и исполнителей).

WMA Lossless (Hi-Res). Версия Windows Media Audio без сжатия, поддержку которой уже не часто можно встретить в смартфонах и планшетах.

Аудиофайлы со сжатием и без него

Вначале рассмотрим три категории, в которые можно сгруппировать все форматы аудиофайлов. Они определяются степенью сжатия данных и связанным с ним уровнем потерь качества звучания.

Если для сжатия аудио в вашем файле не применялся специальный алгоритм (или кодек), это приведет к двойному результату: во-первых, потерь качества звучания не будет, во-вторых, место на вашем жестком диске скоро закончится.

По своей сути запись в формате без сжатия полностью соответствует оригинальному аудиофайлу, в котором зафиксированы в цифровом представлении реальные звуковые сигналы.

WAV и AIFF можно назвать самыми популярными форматами аудиофайлов без сжатия. Оба они основаны на PCM (Pulse Code Modulation, импульсно-кодовой модуляции), широко известном механизме непосредственного преобразования аудиосигнала в цифровую форму. В WAV и в AIFF применяются схожие технологии, но методы хранения данных несколько различаются. В этих форматах можно записывать как файлы CD-качества, так и более высокого разрешения.

Формат WAV был разработан Microsoft и IBM, в силу чего применяется на платформах на базе Windows; он является стандартным форматом записи компакт-дисков.

Формат AIFF создан компанией Apple как альтернатива WAV; и хотя AIFF-файлы менее распространены, они обеспечивают более полную поддержку метаданных, позволяя хранить обложки альбомов, названия песен и тому подобную информацию.

Недостаток этих форматов – требование гигантских объемов памяти. Файлы CD-качества (16 бит, 44,1 кГц) занимают около 10 МБ дискового пространства на минуту звучания.

ALAC, FLAC, WMA Lossless: аудиоформаты без потерь

Все мы любим FLAC. Формат без потерь, файлы во FLAC (Free Lossless Audio Codec, бесплатный аудиокодек без потерь) по размеру почти вдвое меньше, чем в WAV или AIFF без сжатия с эквивалентной частотой дискретизации, однако в плане звучания никаких потерь качества не заметно. FLAC также поддерживает более высокое разрешение по сравнению с CD-качеством – до 32 бит и 192 кГц.

Помимо FLAC, есть и другие форматы без потерь – ALAC (Apple Lossless) и WMA Lossless (Windows Media Audio). Первый представляет собой отличную альтернативу для iOS и iTunes, хотя размер файлов чуть выше, чем у FLAC. Не все смартфоны и планшеты поддерживают его.

AAC и MP3: аудиоформаты с потерями

Кто не слышал про MP3? Все про него слышали. Этот самый распространенный аудиоформат удобен для хранения музыки на плеерах iPod или планшетах и поддерживается практически любыми устройствами. Однако для этого приходится жертвовать значительным объемом информации. Для того чтобы уменьшить размеры файлов на порядок по сравнению с записями в CD-качестве, необходимо отбросить значительный процент исходных данных, что приводит к потере качества звучания.

Еще один формат с потерями, AAC (Advanced Audio Coding, усовершенствованное кодирование звука), также предполагает сжатие, как и MP3, но благодаря несколько более эффективным алгоритмам обеспечивает более качественный звук. AAC используется для скачивания с iTunes и трансляций с Apple Music (с битрейтом 256 кбит/с), а также в передачах с YouTube.

Формат Vorbis, нередко называемый Ogg Vorbis, чтобы подчеркнуть использование контейнера Ogg, представляет собой альтернативу MP3 и AAC с открытым кодом, не подпадающую под действие патентов. Этот формат с битрейтом 320 кбит/с используется в трансляциях Spotify.

Как насчет музыки в высоком разрешении?


В отличие от HD-видео, для аудио высокого разрешения пока не разработано универсального стандарта.

Если не вдаваться в подробности, под этим термином обычно понимаются записи с более высокой частотой дискретизации и/или разрядностью, чем у CD (т.е. 16 бит/44,1 кГц). Примерами Hi-Res-аудио могут служить файлы с параметрами 16 бит/96 кГц или 24 бит/192 кГц.

Благодаря наличию дополнительной аудиоинформации Hi-Res-файлы звучат намного лучше в сравнении с компрессированными файлами, теряющими эту информацию в процессе сжатия. Эти форматы требуют больше места на диске, но их качество определенно стоит таких затрат.

К Hi-Res-аудио относятся форматы без сжатия, такие как AIFF и WAV, а также без потерь – FLAC и ALAC. DSD (отчасти нишевый формат, применявшийся в Super Audio CD) также входит в категорию Hi-Res-аудио, но его поддерживает гораздо меньшее число устройств. Если говорить о стриминге, то такие сервисы, как Tidal Masters, используют упаковщик MQA, позволяющий передавать по сетям файлы в высоком разрешении с использованием минимально возможной полосы пропускания сигнала.

Что касается воспроизведения форматов Hi-Res-аудио, то сегодня его поддерживает уже немало устройств. 24-разрядные файлы способны проигрывать беспроводные колонки Denon HEOS, а также портативные музыкальные плееры премиум-класса – такие как Cowon Plenue D2 и Astell & Kern A&norma SR15.

Кроме того, с Hi-Res-аудио совместимы большинство флагманских моделей смартфонов под Android – например, удостоенный высших оценок Samsung Galaxy S10+ – однако прослушать их на новеньком iPhone вам сходу не удастся. Мы нашли способы обойти это ограничение, но нельзя забывать о том, что файлы Hi-Res-аудио пока еще не настолько компактны, как их аналоги в форматах с потерями.

Какой аудиоформат будет лучшим для вас?

Выбор формата зависит от того, что вас больше волнует – объем памяти или качество звучания – а также от того, с каким устройством вы намерены его использовать.

Популярность MP3 сложилась в эпоху, когда стоимость дискового пространства была очень высока. Сегодня смартфоны, музыкальные плееры и ноутбуки оснащаются памятью внушительного объема, так что есть смысл обратить внимание на форматы с качеством выше, чем у CD.

Если же вы решили архивировать свои аудиофайлы, FLAC или другой формат без потерь может стать неплохим вариантом. Они представляют собой удачный компромисс между уровнем сжатия и качеством звучания, позволяя слушать высококачественную цифровую музыку и сэкономить дисковое пространство. Только не забудьте проверить совместимость выбранного формата и имеющихся устройств.

Общие сведения

Формат иногда путают с MPEG-3, но MP3 предназначен для сжатия исключительно аудиоинформации и полное название звучит как MPEG Audio Layer-3. MPEG-3 же предназначался для использования в системах телевидения высокой четкости (HDTV) с битрейтом потока 20-40 Мбит/с, но позже стал частью стандарта MPEG-2 и отдельно теперь не упоминается.

Но вот, эйфория, вызванная его появлением, потихоньку прошла, и стало ясно, что М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 плеер. Это возможно не изменится в будущем, тем не менее некоторые слуховые тесты показали хорошую производительность на низких битрейтах по сравнению с другими кодеками.


Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в 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)
  • 12 Индекс версии MPEG (Audio version ID)
  • 13 Индекс версии Layer (Layer index)

    Кстати, MP3 – это MPEG-1 Layer III
  • [15] Бит защиты (Protection bit)
    1 – нет защиты
    0 – заголовок защищен 16-бит. CRC (следует за заголовком)
  • 19 Индекс битрейта (Bitrate index)

    В таблице хранятся значения битрейта в килобит/сек. Однако в данном формате подразумевается, что 1 килобит = 1000 бит, а не 1024. Таким образом 96 Кбит/сек = 96000 бит/сек.
  • 20 Индекс частоты дискретизации (Sampling rate index)
  • [22] Бит смещения (Padding bit)
    Если он установлен, то данные смещаются на 1 байт. Это важно для расчета размера фрейма.
  • [23] Бит private (только для информации)
  • 25 Режим канала (Channel mode)
  • 27 Расширение режима канала. (Mode extension) Используется только с Joint stereo
  • [28] Копирайт (Copyright bit) – только для информации
  • [29] Оригинал (Original bit) – только для информации.
  • 30 Акцент (Emphasis) – в данный момент практически не используется.

Режимы сжатия данных или какой бывает битрейт

Существует 3 режима сжатия данных:

CBR (constant bitrate) – постоянный битрейт. Не меняется на всем протяжении трека.

VBR (variable bitrate) – переменный битрейт. При этом сжатии битрейт постоянно меняется на протяжении трека.


Если файл закодирован с постоянным битрейтом – то мы уже можем наконец-то! получить длительность нашего трека по следующей формуле:

Например, файл имеет размер 350670 байт. Есть ID3v1 теги (128 байт) и ID3v2 теги (1024 байта). Битрейт = 96. Следовательно размер аудиоданных равен 350670 – 128 – 1024 = 349518 байт.
Длительность = 349518 / 96000 * 8 = 29,1265 = 29 секунд

Необходимо пояснить – как определить режим сжатия. Всё просто. Если файл сжат с VBR – то добавляется VBR-заголовок. По его наличию мы и можем понять, что используется переменный битрейт.
Есть два вида заголовков: Xing и VBRI.
Xing размещается со смещением от начала первого mp3-фрейма в позиции, согласно таблице:


Заголовок 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-файла для теста.

Читайте также: