Формат звуковых файлов mp3 характеризует ответ
Появившись ещё в середине 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 же остаётся "проверенной рабочей лошадкой" для бытового применения и обеспечивает отличное качество звучания, если использовать нормальный кодек с правильными настройками сжатия.
©2010, Анатолий Савенков
опубликовано: 08.05.2010
Формат mp3, что это такое? В статье расскажем подробно об этом формате. Кроме того, разберем вопрос, как создавать файл mp3 и с ним работать. С помощью этой информации начинающие пользователи будут знать, какой формат использовать для работы с аудио.
Формат mp3, что это такое, где используется
Здравствуйте, друзья! Многие пользователи ПК знают, что есть такой формат, как mp3, но не все понимают, что он обозначает. Сегодня мы ответим на вопрос, формат mp3, что это такое.
Итак, форматом mp3 называют цифровой формат, который хранит аудио-файлы. Его разработали программисты MPEG в 1993 году. Простыми словами, mp3 относят к кодекам, которые выполняют задачу цифрового кодирования. Они воспроизводят и передают аудио-информацию (скрин 1).
Формат mp3 используется для воспроизведения музыки на Андроид, компьютере или других устройствах. Вместе с тем, аудио файлы в этом формате загружают в социальные сети, на сайты в Интернете, записывают речь в mp3 формате, используют в музыке.
Далее рассмотрим характеристики формата mp3 и виды. Также разберем, какие программы работают с данным форматом.
Характеристики формата(файла) mp3
В этом разделе будут показаны технические характеристики формата mp3. С помощью характеристик вы сможете определить, какой формат для аудио-файлов лучше использовать:
Теперь, вы знаете, какие имеет основные характеристики формат mp3.
Виды и типы аудио форматов
Кратко сделаем обзор на виды аудио форматов. Они разделены на три типа:
- Аудио форматы без сжатия. К ним можно отнести следующие виды форматов: WAV, AIFF, PCM.
- Сжатые форматы без потерь – это FLAC, ALAC, WMA Lossless.
- Сжатые аудио-форматы с потерями: формат mp3, AAC, OGG, WMA и другие форматы.
Перечисленные форматы отлично подойдут для работы со звуком и медиа-файлами.
Битрейт, что это такое? Это нужно знать для работы с аудио форматами
Важно знать, битрейт, что это такое? Давайте рассмотрим подробно понятие, чтобы понять значимость битрейта в работе с аудио форматами.
Итак, битрейт – это количество бит, которые используются для обработки и передачи информации в единицу времени. Проще говоря, битрейтом можно назвать скорость потокового воспроизведения аудио-файла.
Битрейт принято разделять на три вида: Постоянный – когда значение битрейта не меняется, Переменный – число битрейта может меняться в зависимости от пользовательских настроек, Усредненный – когда сочетаются первые два вида битрейта.
Стандартные значения битрейта следующие – «32 kbps-1411 kbps». Показатель битрейта можно увидеть в свойствах аудио файла (скрин 2).
Далее будут рассмотрены программы, которые работают с аудио-форматом mp3.
Программы для mp3
Если вам нужно открыть аудио файл в формате mp3, для этого есть специальные программы (скрин 3).
Они работают в качестве аудио-плееров. Некоторые программы не нужно устанавливать на ваши устройства – они уже установлены. Чтобы открыть формат mp3, достаточно запустить аудио-файлы в нужном проигрывателе. Далее по инструкции это сделаем.
Программы для работы с mp3 на компьютере с ОС Windows
Для работы с mp3 форматом можно использовать бесплатные программы:
- Media Player Classic (MPC);
- Windows Media Player;
- GOM Audio;
- Winamp Lite;
- TRAKTOR DJ Player; , которая записывает звук в MP3
Итак, чтобы открыть mp3 на компьютере или ноутбуке, воспользуемся программой Windows Media Player. Приготовьте заранее аудио-файл в формате mp3 на рабочем столе компьютера. Далее нажмите по данному файлу правой кнопкой компьютерной мыши и из меню кликните кнопку «Воспроизвести» (скрин 4).
После этого аудио файл формата mp3 будет открыт для воспроизведения. Если у вас установлены другие проигрыватели для аудио файлов mp3, то нажмите по файлу правой кнопкой мыши далее «Открыть с помощью». Затем выберите программу, которая воспроизведет аудио-файл в этом формате.
Программы для работы с mp3 на компьютере с ОС Mac
Для операционной системы Mac есть специальные аудио-программы, которые работают с mp3 файлами:
- FL Studio Mac;
- GarageBand Mac;
- Soundflower;
- Aiseesoft Mac Blu-ray Player 6.5.20;
- Tipard Blu-ray Player for Mac 6.2.16;
- Macgo Mac Blu-ray Player 3.3.20.
Формат mp3, что это такое для телефона? Работа на Андроиде и iOS
Для Андроид и iOS есть приложения, которые воспроизводят аудио файлы в mp3. Если вы работаете с телефона с ОС Андроид, то в таком случае можете скачать и установить с Плей Маркета следующие приложения:
- AIMP;
- Google Play Музыка;
- PowerAMP;
- Music Player Pro;
- и другие приложения.
Практически все Андроид оснащены встроенным проигрывателем. Можно скачать музыку, например, из ВК и сразу ее воспроизвести на телефоне в формате mp3.
Некоторые пользователи работают с операционной системой iOS и слушают музыку в формате mp3. Чтобы успешно открыть этот формат файлов в данной OC, можете воспользоваться приложениями:
- Vox Music Player;
- Radsone Hi-Res Player;
- Flacbox;
- jetAudio;
- Onkyo HF Player.
Конечно, это еще не все программы, которые работают с форматом mp3 на iOS. Остальные вы можете скачать с магазина АппСторе.
Как создать файл mp3, простые шаги
Создать файл mp3 вам поможет любая программа для записи звука. Практически на каждом компьютере есть приложение, которое записывает звук, либо установите другую программу. Чтобы активировать приложение записи голоса, наберите в поиске Windows: «Запись голоса».
Далее нажмите по программе. Затем подключите к компьютеру микрофон. Кликните на значок записи и запишите с помощью приложения свой голос (скрин 5).
После чего остановите запись и найдете в разделе «Документы», далее «Аудио-записи» файл в формате mp3.
Чем конвертировать формат mp3 в ogg, wav и другие форматы и наоборот
При необходимости, пользователи конвертируют формат mp3 в другие форматы. Сделать это можно с помощью онлайн-конвертеров или программ. В статье: «Бесплатный конвертер видео в видео — Video to video converter» рассказывается о бесплатном конвертере, который конвертирует разные форматы. Вы можете его применить.
Принцип работы сервисов и программ конвертеров простой. Загружаете в них аудио файл в формате mp3 далее выбираете, например, формат wav и нажимаете Конвертировать. После этого на компьютер скачиваете обработанный файл с другим форматом.
Кроме того, вы можете загрузить в этот конвертер, например, формат WAV и перевести его обратно в формат mp3.
Заключение
В статье рассмотрен вопрос, формат mp3, что это такое. Кроме того мы рассмотрели характеристики формата, какие программы запускают файлы mp3. Использование данного формата даст вам много преимуществ: вы сможете не только слушать музыку в этом формате, но и создавать аудио-файлы, редактировать.
Да, это была революция, но очень странная революция. Ведь этот уникальный алгоритм в начале своего существования висел буквально на волоске. Полное отсутствие рекламы, никаких проигрывателей музыки данного формата, кроме фирменного от Fraunhofer IIS, который отличался крайней убогостью дизайна, жутким управлением и непомерными системными требованиями. Прибавьте еще и колоссальные аппетиты самих разработчиков, которые хотели за свои кодеки (CODEC – COder/DECoder) довольно немалые суммы (схожая ситуация сейчас с некоторыми форматами семейства AAC) и отсутствие музыки как таковой, в отличие от солидных залежей музыки в формате RA. Эти факторы вполне могли загубить новорожденного сразу же после родов. И все любители хорошей музыки должны сказать огромное спасибо тем известным и безымянным разработчикам freeware MP3 CODEC, которые не дали создателю этого формата фирме Fraunhofer IIS из-за своей маркетинговой глупости и жадности погубить гениальное творение.
МР3 изнутри: психофизиология звука
Данный формат использует крайне сложный алгоритм кодирования. В отличие от обычных архиваторов, которым нужно ухитрится сжать информацию таким образом, чтобы после извлечения из архива в ней не изменилось ни одного бита, MP3 преследует несколько иные цели. Помимо математических алгоритмов сжатия, в этом формате присутствует так же сложнейший алгоритм удаления ненужной звуковой информации, основанный на психолого-физиологических особенностях организма человека. Попытаюсь остановится на данном моменте несколько подробнее.Как уже говорилось, MP3 является потоковым форматом. Это означает, что звуковая информация при кодировании разбивается на равные по продолжительности участки, которые называются фреймами. Все фреймы взаимно независимы. Каждый из этих фреймов кодируется отдельно со своими параметрами и имеет заголовок, в котором эти параметры описаны. При воспроизведении последовательность декодированных фреймов и порождает непрерывное звучание записанного звука.
Какие преимущества дает данный подход? Во-первых, возможность перемотки, так как возможен легкий переход к произвольному фрейму, и воспроизведение звука именно с этого места. Во-вторых, именно эта структурная особенность и делает MP3 по настоящему сетевым форматом. Загрузив первые несколько фреймов в оперативную память или дисковый кэш, проигрыватель начинает их воспроизводить, при этом одновременно подгружая новые фреймы, чем достигается непрерывность воспроизведения. И наконец, если вы не смогли целиком скачать MP3 файл из сети Internet, то ничего страшного, музыку все равно можно будет слушать, просто проигрыватель дойдет до того места, на котором оборвалась связь и остановится.
Так вот вернемся к нашим фреймам. При высоком качестве MP3, а это bitrate
320 кbs, для кодирования фреймов применяются только математические алгоритмы сжатия. Качество при этом совершенно не страдает, но и размер уменьшается всего в четыре раза, то есть коэффициент сжатия такой, какой бы дал обычный архиватор; именно поэтому файлы формата МР3 практически не ужимаются обычными архиваторами. При уменьшении полосы пропускания (bitrate) до 256 kbs и ниже, в дело вступают те самые алгоритмы удаления "ненужных" звуков, которые основаны на особенностях восприятия звука человеческим ухом, так называемая "психоакустическая модель". Процессы удаления "ненужных" звуков называются квантованием. Чем меньше bitrate, тем жестче идет квантование.
По каким же критериям оценивается "нужность" и "ненужность" звуков? Подавляющее число кодеков выбрасывает звуки, которые считаются выходящими за порог слышимости человека. При этом за значение порога, так сказать de fakto, принимается величина равная 16kHz. Несмотря на то, что этот порог признан азбучной величиной и вписан во все учебники по физике, этот подход неверен. Люди весьма разнообразны по своим физиологическим особенностям. Кроме того, нужно учитывать, что у молодежи слуховой порог гораздо выше, чем у пожилых людей, и запросто может превышать эту среднестатистическую величину. Так же многое зависит от интенсивности сигнала. Следовательно, удаление частот выше 16kHz абсолютно неприемлемо для высоких битрейтов претендующих на CD качество, но вполне уместно для низких битрейтов, где качество приносится в жертву размеру.
Другим критерием, по которому оценивается "ненужность" звука, является условие основанное на такой особенности человеческого слуха, как неспособность большинства людей различать сигналы, по мощности лежащие ниже определенного уровня, причем этот уровень различен для разных частотных диапазонов. При использовании психоакустической модели кодирования MP3 CODEC автоматически выбрасывает маломощные, неслышимые частоты. К сожалению, опять таки, люди не одинаковы и те, кто в состоянии различить именно эти частоты, часто жалуются на потерю качества звучания при кодировании, тогда как среднестатистическое большинство этого не замечает.
Но самой главной особенностью психоакустической модели кодирования MP3 является так называемый эффект маскирования. Именно благодаря этому эффекту удается так сильно сжимать исходные аудиоданные. Суть этого эффекта в том, что слабый сигнал одного диапазона частот зачастую маскируется более мощным сигналом соседнего диапазона, если он присутствует в аудиозаписи, или мощным сигналом, предыдущего фрейма. Этот сильный сигнал вызывает временное понижение чувствительности уха к сигналу текущего фрейма. По сути, имеет место явление "временного оглушения". Для каждого звукового диапазона определяется величина маскирующего эффекта, создаваемого сигналом соседних диапазонов и сигналом предыдущего фрейма. Если маскирующий сигнал превышает мощность сигнала текущего диапазона, то данный диапазон сигнала не кодируется, что позволяет психоакустической модели удалить часть данных из этого фрейма. Для оставшихся данных каждого диапазона определяется, сколькими битами на фрейм мы можем пожертвовать, чтобы потери от дополнительного квантования были ниже величины маскирующего эффекта. Несомненно, все отмечали, что звук, кодированный при низких битрейтах, отличается крайней нечеткостью и глухостью. Это происходит из-за того, что при потере одного бита информации в общее звучания вносится шум квантования величиной порядка 6 dB.
Все эти ухищрения суммарно называются адаптивным кодированием. Используя тот факт, что подавляющее большинство людей не обладают идеальным слухом, технология адаптивного кодирования позволяет существенно уменьшить размер кодируемого файла выбросив наименее значимые с точки зрения слухового восприятия детали звучания.
Надо заметить, что в случае низких битрейтов кодирование начинается с адаптивного кодирования. После дополнительного квантования формируется итоговый поток, который затем и сжимается по алгоритму Хаффмана (аналогично алгоритму RAR).
Чем замечателен этот формат, так это тем, что степень сжатия, то есть, соотношение размер/качество полностью во власти пользователя. Ширина потока (bitrate) способна изменяться от наибольшего значения в 320kbs, до 64 kbs и ниже, соответственно варьируется и размер.
Качество требует жертв
Очевидно, что различные битрейты даже одного и того же CODECa дают далеко неодинаковое качество. Причем разные люди совершенно по-разному оценивают качество приемлемости одних и тех же битрейтов, высказывая свое собственное сугубо субъективное мнение. При оценке качественности звучания зачастую возникает путаница, так как многие путают факт наличия низкого или высокого уровня шумов с высоким или низким качеством сигнала. Такой дуболомный подход в принципе неверен, так как это характеристика обычной, некомпьютерной аппаратуры, которую некоторые лихо по аналогии переносят на цифровое аудио, забывая, что для компьютера это всего лишь характеристика конкретного программного MP3 плеера. Отсюда следует, что в некоторых случаях, сменив плеер можно существенно улучшить качество воспроизведения.Так же, почему-то многие пользователи считают, что мнение профессионалов, так сказать "дегустаторов" от звука, обладающих хорошо развитым слухом и чувством фальши, не является авторитетным, а важно мнение середнячков со слухом отравленным дешевой аудиоаппаратурой уровня ESS. Это мнение может повлиять только на звание которое дают тому или иному CODECу – например "массовый", "народный", "популярный", но при оценке качественности кодировщика оно абсолютно неуместно.
При разработке формата MP3 его разработчики наняли команду профессиональных звуковых "дегустаторов", которые прослушали определенный набор тестовых композиций закодированных с разными битрейтами. Профессионалы единогласно указали, что битрейт 256kbs в большинстве случаев сохраняет качество звучания, которое практически не отличается от исходного. И так же единодушно указали, что уже битрейт 192kbs довольно ощутимо отличается от оригинала и не может претендовать на непогрешимость.
Но вы должны обратить внимание на оговорку "в большинстве случаев" которую эксперты сделали для битрейта 256kbs. В некоторых случаях, особенно при кодировании классической музыки этот битрейт проявляет себя не лучшим образом.
Если вы хотите точного соответствия сжатого файла оригиналу, пользуйтесь максимальный для кодирования CD Audio битрейтом - 320kbs. Коэффициент сжатия 4:1, для битрейта 256 kbs – 6:1. Размер несколько больше, зато качество смело можно считать непогрешимым.
Многие пользователи-меломаны уже создали себе обширные фонотеки на CDR или просто на винте, используя MP3 256kbs и 320kbs. Кстати, именно в этой связи повсеместно приобрели огромную популярность домашние компьютеры, оснащенные приводами CD-RW (пишущий CD-ROM).
Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в 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 байта.
- 10 Маркер – 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 бит/сек. - 21 Индекс частоты дискретизации (Sampling rate index)
- [22] Бит смещения (Padding bit)
Если он установлен, то данные смещаются на 1 байт. Это важно для расчета размера фрейма. - [23] Бит private (только для информации)
- 24 Режим канала (Channel mode)
- 26 Расширение режима канала. (Mode extension) Используется только с Joint stereo
- [28] Копирайт (Copyright bit) – только для информации
- [29] Оригинал (Original bit) – только для информации.
- 30 Акцент (Emphasis) – в данный момент практически не используется.
Режимы сжатия данных или какой бывает битрейт
Существует 3 режима сжатия данных:
CBR (constant bitrate) – постоянный битрейт. Не меняется на всем протяжении трека.
VBR (variable bitrate) – переменный битрейт. При этом сжатии битрейт постоянно меняется на протяжении трека.
ABR (average bitrate) – усредненный битрейт. Это понятие используется только при кодировании файла. На «выходе» получается файл с VBR.
Если файл закодирован с постоянным битрейтом – то мы уже можем
Длительность = Размер аудиоданных / Битрейт (в битах!) * 8
Например, файл имеет размер 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-файла для теста.
Читайте также: