Что такое mp3 bitrate
mp3 Разбираемся по порядку
Введение
За последние несколько лет стал ужасно модным и популярным формат MP3. На любом лотке, торгующем компьютерными CD-дисками, вы легко найдете не один десяток дисков типа «Полная антология группы XXX», и внизу скромненькую такую надпись — MP3. Чаще всего для полной картины на обложках красуется модное словосочетание CD quality — то бишь качество, как у Audio-CD. Именно об этом и не только будет дальше наше повествование — о MP3, какие они бывают, о качестве звука в MP3.
О формате MP3
Для начала немного разберемся с предметной областью. Что вообще из себя такое представляет этот MP3?
MP3, более правильное название MPEG-1 Layer 3 — стандарт на сжатие аудиоинформации с потерями. При этом основной целью при создании стандарта было обеспечение максимально «идентичного» исходному звука, а также сведение к минимуму объема хранимых данных. Для этого была создана оригинальная схема кодирования — на первом этапе оцифрованный звук разбивается на частотные составляющие, которые проходят через ряд фильтров.
Основное отличие MP3 от прежде существовавших стандартов — именно в фильтрации. Разработчики стандарта создали так называемую психоакустическую модель — модель, которая учитывает некоторые особенности человеческого слуха, и на основании этой модели из аудиосигнала отфильтровываются те частоты, отсутствие которых слух почти не замечает. На втором этапе полученный поток кодируется по алгоритму Хаффмена со статической таблицей. Результат и будет являться потоком MP3.
Кроме этого в файл MP3 могут быть добавлены также тэги ID3 (метки, содержащие название песни, исполнителя, другую информацию) и различная сервисная информация.
Режимы сжатия и битрейты
Ширина потока — битрейт определяет, сколько бит необходимо для кодирования 1 секунды музыки. Стандарт MP3 регламентирует потоки от 8kbit/s до 320kbit/s. Наиболее типичный битрейт — 128kbit/s.
Исходя из потока, легко подсчитать, сколько будет занимать одна минута музыки — надо битрейт разделить на 8 (число бит в байте) и умножить на 60 (секунд в минуте) — получим число килобайт. Для уже упомянутого потока 128kbit/s это будет 128/8*60=960 килобайт или около мегабайта на каждую минуту записи.
Вполне естественно, что чем больше битрейт, тем больше деталей звука удается сохранить, тем он звучит реалистичнее. В выборе битрейта при кодировании приходится чем-либо жертвовать — либо качеством в пользу малого размера, либо размером в пользу качества.
Самый простой режим сжатия MP3 — это режим с постоянным битрейтом (CBR, Constant BitRate). Ранее на сборках MP3 почти на 100% использовался уже упомянутый выше битрейт 128kbit/s — и при этом на дисках присутствовала надпись CD quality. Откровенно говоря, это просто наглая ложь. На практике отличить звучание такой MP3 от звучания аудио компакт-диска нельзя разве только что на самой дешевой акустике.
Уровень качества на битрейте 128kbit/s — это примерно уровень звучания среднего магнитофона на не самой свежей пленке, может чуть лучше. Еще можно добавить, что именно такой битрейт широко распространен в записях, доступных по Internet.
Для упрощения разбора более высоких битрейтов напишу их сеточку: 128kbit/s, 160kbit/s, 192kbit/s, 224kbit/s, 256kbit/s, 320kbit/s. Итак, битрейты 160 и 192kbit/s уже заметно лучше по качеству, нежели 128kbit/s, но получаемые файлы все еще не так велики. «Артефакты» (огрехи) кодека уже почти незаметны (по крайней мере на моей системе).
С битрейтом 224 мне в чистом виде ни разу встретиться не пришлось, поэтому про его качество ничего не могу сказать, но оно должно быть выше, чем на предыдущей ступеньке лесенки битрейтов. Кроме того, мне не встречались обзоры, охватывавшие и этот битрейт. Видимо это как-то связано с тем, что следующий за ним битрейт 256kbit/s является признанным в плане точности передачи звука, почти полным отсутствием искажений. В инструкции к кодеку Lame этот битрейт даже назван как Studio Quality. И самый потолок — 320kbit/s предназначен для тех, кому качество дороже всего, или для владельцев очень качественной Hi-Fi или даже Hi-End аппаратуры.
Теперь перейдем к несколько более сложному вопросу — режиму переменного битрейта (VBR, Variable BitRate). Здесь понятие битрейта очень размыто, кодеки «для пользователя» вообще используют регулировку только по качеству (как например в Xing Audio Catalyst). Другие же (Lame) позволяют задавать дополнительные параметры — минимальный и максимальный битрейты, опять же качество.
При кодировании VBR кодек сам выбирает нужный битрейт, исходя из заданных ему параметров, причем в течение кодируемого фрагмента битрейт может изменяться. Для оценки нужного битрейта используется уже упоминавшаяся психоакустическая модель. Однако модель (так как не является идеальной, ничто в нашем мире не идеально) иногда показывает неверные результаты. Это приводит к занижению оценки, и соответственно падению реально слышимого качества звука.
Разработчики кодека Lame советуют в таком случае устанавливать порог минимального битрейта, чтобы избежать совсем плохих результатов. К разновидностям VBR относится и кодирование ABR (Average BitRate), усредненного битрейта. В последнее время в обзорах слышны только положительные отклики об этом режиме, особенно ABR на 256kbit/s. Работает этот режим почти также, как и VBR, с тем исключением, что кодек придерживается среднего заданного значения. В настоящий момент мне известен только один кодек, имеющий режим ABR — это Lame.
Выбор кодека
Буквально совсем недавно у пользователя, желавшего получить пристойное качество MP3, был не очень большой выбор — это какой-либо ISO-based кодек (основанный на коде образца кодека MP3, выпущенного International Standarts Organization), либо кодек от IIS Fraunhofer (институт — разработчик MP3). Плюс кодеки в продуктах от Xing.
Для тех, кому лень читать дальше, скажу, что я использую кодек Lame и считаю это единственным правильным выбором для MP3 на сегодняшний день.
Почитав разных обзоров, и сделав небольшие собственные исследования, я пришел к выводу о ветке продуктов фирмы Xing — это… их лучше не использовать. Даже в относительно новых версиях все их продукты, умеющие создавать MP3 встроенными средствами, делают это максимально некачественно.
Рекомендую их НЕ использовать вообще (назову поименно — Xing MPEG Converter, Xing MP3 Encoder, Xing Audio Catalyst и все остальные, помеченные фирмой Xing).
Существует также масса «пионерских» поделок, слепленных на ворованном у Xing кодеке (почти все содержат в составе файл tompg.exe). Долгое время их основным преимуществом была скорость (в ущерб качеству), но сегодня кодек Lame показывает сравнимую скорость при более высоком качестве. Кроме того, продукция фирмы Xing вообще говоря стоит денег, тогда как Lame бесплатен по определению.
Далее пройдусь по продукции IIS Fraunhofer. Все их программы для сжатия MP3, доступные бесплатно, являются сильно урезанными по возможностям версиями их же коммерческих продуктов. Затем, все их кодеки не развивались в течение долгого времени, и не содержат новых средств, поддержки VBR/ABR, кроме того не отличаясь особым быстродействием. Единственное их оправданное применение — сжатие на битрейтах ниже 128kbit/s — в них проведена специальная оптимизация под низкие битрейты (местами, правда, с нарушением стандарта).
Различные кодеки на базе кода ISO страдают в принципе одним и тем же недостатком — низкокачественным сжатием на битрейтах ниже 192kbit/s. Кроме того, большинство из них (в т.ч. и BladeEnc) — изрядно медленные.
На мой взгляд, самым оптимальным вариантом является кодек Lame. Начинавший как свободный кодек на базе ISO-кода, в процессе разработки он вырос и теперь все обзоры при сравнении MP3 с другими форматами используют именно его в качестве эталонного для MP3. Немногим более года назад проект Lame окончательно избавился от ISO-кода и теперь может считаться полностью независимым кодеком.
Существует также несколько урезанная версия Lame — энкодер GOGO-no-coda, который показывает по скорости фантастические результаты (в два раза быстрее, чем и так быстрый Lame).
Так какой же битрейт и какой режим использовать?
Учитывая все вышесказанное, я бы порекомендовал класть в архив MP3 либо с потоком 320Kbit/s, режим CBR, либо 256kbit/s, ABR. Первый на мой взгляд несколько предпочтительнее, т.к. вы получаете максимально доступное качество в рамках формата. Для записей на «пару раз послушать и стереть» разумно использовать ABR 192kbit/s.
И еще одно — лучше не использовать для сколь-нибудь долгого хранения битрейты ниже 192kbit/s — если только запись, с которой была сделана MP3, у вас не постоянно под рукой (хотя помните, что аналоговая запись на магнитной ленте с течением времени ухудшается).
Очень часто аргумент, который я слышу в пользу низких битрейтов и «кривого» сжатия — «у меня плохая акустика, и я все равно не слышу разницы». Все может измениться, или вам придется использовать свой архив на приличной аппаратуре, а до исходной записи будет добраться нельзя. Ответ абсолютно не надуман, я могу привести случай из собственной практики.
В нашем городе Павлово был когда-то небольшой клуб, где музыку воспроизводили с компьютера (MP3 с битрейтом не выше 160kbit/s). Далее клуб благополучно скончался, а компьютер с архивами музыки переехал в другую фирму, занимавшуюся проведением массовых мероприятий. Представьте себе, что они взялись крутить эту музыку на дне города! Ужас, когда на более-менее приличной акустике было слышно все дефекты, привнесенные упаковкой на такой маленький битрейт. Звук был хуже, чем с их же видавшего виды кассетного магнитофона с полупережеванными кассетами. Было бы разумно избегать повтора чужих ошибок, верно?
Тестовое оборудование и ПО
Компьютер: Athlon TB 650MHz, M/B Acorp 7KTA 100MHz FSB, 128Mb RAM PC-133, HDD Quantum 40Gb 5400rpm, SoundBlaster 16 Vibra, AC97 codec.
Аудиосистема: усилитель Radiotehnika У-7111, пара колонок Radiotehnika S-90B.
ПО: ОС Windows98 SE, Winamp 2.75, Eac 0.9pb11, Lame 3.90a, GOGO-no-coda 3.07a
Что такое битрейт? Подробная характеристика
Битрейт – это не просто непонятное слово, это важнейший показатель аудио или видео. Вы уже знакомы с этой характеристикой медиафайлов? Если нет – приступайте к нашем обзору, мы подробно рассказываем все необходимое!
Что это такое
Битрейт (ширина потока/ ширина пропускной полосы) – это количество бит (единиц информации), используемых для передачи и обработки данных за секунду времени воспроизводимого файла. Иначе говоря – минимальное значение канала, способного пропускать поток без задержек. Мерой измерения служат биты/сек и производные величины – кбит/сек, мбит/сек и другие.
Разобрались, что это за битрейт видео/ аудио? Вы удивитесь, но существует несколько разновидностей ширины пропускной полосы. Доходчиво объясняем, на какие типы можно поделить.
Для КС:ГО есть минимальные требования устройства? Ответ читай уже в этой статье
Существует несколько режимов сжатия потока – стоит изучить каждый из них. Важно понимать все тонкости – только так можно окончательно разобраться, что это такое – битрейт.
Как мы и сказали выше, типов всего три. Пройдемся по каждому.
Постоянный (Constant bitrate, CBR)
Заданное значение не меняется на всем протяжении файла: каждой секунде соответствует определенное – и одинаковое – количество закодированных бит данных (даже когда речь о тишине). Используется чаще при обработке файлов с постоянными характеристиками звучания и изображения.
Переменный (Variable, VBR)
Заданное пользователем число автоматически меняется программой-кодером в процессе кодирования (для каждого кадра, согласно его характеристикам). Такая технология используется для достижения наилучшего соотношения размера и качества.
Усредненный (Average, ABR)
Усредненный битрейт – это сочетание первых двух типов! Используется при создании крупных проектов – при небольшом размере файла можно добиться высочайшего качества кодирования, при этом точность расчета размера значительно выше. Значение в кбит/сек задается пользователем (как при CBR), а программа уже варьирует его в определенных пределах (как при VBR).
Изучение существующих типов позволяет понять, на что влияет битрейт видео и аудио. Чем выше этот показатель, тем выше качество готового мультимедиа-продукта! Это степень сжатия – чем сильнее сигнал сжимается, тем хуже качество и меньше размер. И наоборот!
Стандартные значения
Обязательно нужно запомнить общепринятые стандарты – ориентируйтесь на них при работе с определенным видом контента. Сначала битрейт аудио:
Давайте поговорим о том, какой битрейт видео выбрать! Приводим усредненные значения, которыми можно пользоваться – в зависимости от ситуации. Если вы внимательно изучите список, то поймете, как сильно отличаются цифры.
Существует усредненное значение, которое можно выставлять почти всегда.
При этом нужно учитывать и формат видеоролика! Для наглядности, какой битрейт лучше для видео 1920х1080 в SDR и HDR? В первом случае лучше выставить выставить 8 и 12 mbps (60 кадров/с), а во втором – уже 10 и 15 mbps.
Что такое FPS и какой является оптимальным? Узнай в источнике
Как изменить показатель
Вы уже знаете все о ширине потока – пора разобраться, как узнать битрейт видео и поменять его. В большинстве случаев вам не требуется стороннее программное обеспечение.
Сторонние сервисы нужны, чтобы поменять значение – существует масса онлайн-конвертеров или приложений для десктопа. Рекомендуем обратить внимание на Online Audio Converter, Diktorov.net, AIMP, online-convert.com.
Подробно рассказали, что такое битрейт видео и аудио, привели стандартные значения, рассказали о разновидностях. Теперь вы сможете подобрать оптимальное число и изменить его при необходимости!
Как влияет битрейт на качество музыки?
В наши дни очень много разговоров о том, что мы потеряли настоящую музыку с приходом форматов сжимающих аудио, таких, как MP3, AAC и похожих. Действительно ли это так? Спасут ли музыку Lossless форматы? Может ли вообще неподготовленный слушатель отличить музыку в форматах MP3 от FLAC? Давайте разберемся в этом вопросе.
Что такое битрейт (Bitrate)?
Вероятно, вы уже слышали термин «битрейт» раньше, и вы, вероятно, имеете общее представление о том, что это значит, но, возможно, неплохо познакомиться с ее официальным определением, чтобы вы знали, как все это работает.
Битрейт — это число бит или количеству данных, которые обрабатываются в течение определенного периода времени. В аудио это обычно означает килобит в секунду. Например, музыка, которую вы покупаете в iTunes, составляет 256 килобит в секунду, то есть в каждой секунде песни содержится 256 килобайт данных.
Чем выше битрейт трека, тем больше места он займет на вашем компьютере. Как правило, аудио CD занимает довольно много места, поэтому стало обычной практикой сжимать эти файлы, чтобы вы могли записать больше музыки на ваш жесткий диск (или iPod, Dropbox или что-то еще). Именно здесь вступают в спор форматы «без потерь» и «с потерями».
Lossless и Lossy форматы: в чём разница?
Когда мы говорим «без потерь», мы имеем в виду, что мы действительно не изменили исходный файл. То есть мы скопировали трек с компакт-диска на наш жесткий диск, но не сжали его до такой степени, что мы потеряли какие-либо данные. Это, по сути, так же, как и оригинальная дорожка компакт-диска.
Однако, чаще всего вы, вероятно, копируете свою музыку в Lossy формате. То есть вы взяли компакт-диск, скопировали его на жесткий диск и сжали треки, чтобы они не занимали много места. Типичный MP3 или AAC альбом, вероятно, занимает 100 МБайт или около того. Тот же альбом в формате без потерь, такой как FLAC или ALAC (также известный как Apple Lossless), займет около 300 Мбайт, так что стало обычной практикой использовать форматы с потерями для более быстрой загрузки и большей экономии жесткого диска.
Проблема заключается в том, что когда вы сжимаете файл для экономии места, вы удаляете куски данных. Точно так же, как когда вы берете изображение с высоким качеством, и сжимаете его в JPEG, ваш компьютер берет исходные данные и «обманывает» определенные части изображения, делая его в основном таким же, но с некоторой потерей ясности и качественный.
В качестве примера возьмем два изображения, приведенных ниже: правый справа явно сжат, и в результате качество уменьшилось.
Помните, что вы экономите место на жестком диске сжимая музыку в Lossy форматы, что может иметь большое значение для iPhone с 32 ГБ памяти, но по соотношению объём/качество это всего лишь компромисс.
Существуют различные уровни сжатия: 128 Кбит/с, например, занимают очень мало места, но также будут иметь низкое качество воспроизведения, чем более крупный файл 320 Кбит/с, который, в свою очередь, ниже качеством, чем эталонный файл с 1,411 Кбит/с. 1,411 Кбит/с — это качество уровня Audio CD, которого, в большинстве случаев, более чем достаточно.
Вся проблема не в том, как сильно сжата музыка, а на каком оборудовании вы её слушаете.
Действительно ли битрейт имеет значение?
Поскольку память с каждым годом становиться всё дешевле, прослушивание звука с более высоким битрейтом, или вовсе в Lossless форматах, начинает становиться всё более популярной. Но стоит ли это времени, усилий и занятого объёма памяти в вашем телефоне или компьютере?
Я не люблю отвечать на вопросы таким образом, но, к сожалению, ответ: это зависит.
Часть уравнения — это оборудование, которое вы используете. Если вы используете качественную пару наушников или динамиков, вы привыкли к большому частотному и динамическому диапазонам. Таким образом, вы, скорее всего, заметите недостатки, которые возникают при сжатии музыки в файлы с более низким битрейтом. Вы можете заметить, что в низкокачественных MP3-файлах отсутствует определенный уровень детализации; Тонкие фоновые треки могут быть более трудными для восприятия, верхние и низкие частоты не будут такими динамичными, или вы можете услышать искажения в вокале солиста. В этих случаях вам может потребоваться дорожка с более высоким битрейтом.
Однако, если вы слушаете свою музыку с помощью пары дешёвых наушников на вашем iPod, вы, вероятно, не заметите разницы между файлом со скоростью 128 Кбит/с и файлом 320 Кбит/с, не говоря уже музыке без потерь 1,411 Кбит/с. Помните, когда я показывал вам изображение несколькими абзацами выше и отметил, что вам, вероятно, пришлось вглядываться в него, чтобы увидеть недостатки? Ваши наушники подобны усеченной версии изображения: они сделают эти недостатки трудными для восприятия, так как они физически не способны сыграть вам музыку так, как нужно.
Другая часть уравнения, конечно, ваши собственные уши. Некоторым людям может быть очень тяжело отличить два разных битрейта по простой причине — они мало слушают музыку. Навык слуха, как и любой другой, развивается с практикой. Если вы часто и много слушаете любимую музыку, ваш слух становится более точным и начинает улавливать мелкие детали и полутона. Но до тех пор не имеет особого значения, какой битрейт вы используете?
Так какой формат и битрейт вы должны выбрать для себя? Хватит ли вам 320 Кбит/с, или вам обязательно нужен Lossless формат?
Дело в том, что трудно услышать разницу между файлом без потерь и MP3-файлом 320 Кбит/с. Чтобы услышать разницу, вам понадобится серьезное высококачественное оборудование, хороший слух и определенный тип музыки (например, классическа или джаз).
Для подавляющего большинства людей, 320 Кбит/с более чем достаточно для прослушивания.
Что ещё нужно учесть?
Музыка, записанная в формате Lossless, может быть полезна. Файлы, в формате Lossless более надежны в будущем, в том смысле, что вы всегда можете сжать их до Lossy формата, когда вам это понадобится, но вы не можете сделать наоборот и восстановить исходное CD качество из MP3 файла. Это, опять же, одна из фундаментальных проблем с онлайн-магазинами музыки: если вы создали огромную библиотеку музыки в iTunes и в один прекрасный день решили, что вам нужно больше битрейта, вам придется снова ее покупать, но только на этот раз в формате CD.
Когда это возможно, я всегда покупаю или копирую музыку в Lossless формате для целей резервного копирования.
Я понимаю, что аудиофилам, это как иголка под ногти. Как я уже говорил, все зависит от вас, вашего слуха и оборудования, которое у вас есть.
Сравните два трека, записанного в Lossless и Lossy форматах. Попробуйте несколько разных аудиоформатов, послушайте их некоторые время и наблюдайте, будет ли разница для вас или нет.
В худшем случае вы потратите несколько часов на прослушивание своей любимой музыки — не так страшно, правда? Наслаждайся этим!
Внутри MP3. А как оно всё устроено?
Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало — решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.
Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).
В данной статье мы не будем подробно останавливаться на извлечении ID3v2 тегов – это можно вынести в отдельную статью, так как там есть различные нюансы. А так же на фрагментах заголовков, которые практически не используются в настоящее время (например, часть Emphasis заголовка mp3-фрейма). Так же мы не рассматриваем структуру самих аудиоданных — тех самых, которые слышим из колонок.
ID3 теги
ID3 (от англ. Identify a MP3) — формат метаданных, наиболее часто используемый в звуковых файлах в формате MP3. ID3 подпись содержит данные о названии трека, альбома, имени исполнителя и т. д., которые используются мультимедиапроигрывателями и другими программами, а также аппаратными проигрывателями, для отображения информации о файле и автоматического упорядочивания аудиоколлекции.
Существует две абсолютно разных версии ID3-данных: ID3v1 и ID3v2.
ID3v1 – имеет фиксированный размер в 128 байт, которые дописываются в конец mp3-файла. Там можно хранить: название трека, исполнитель, альбом, год, комментарий, номер трека (для версии 1.1) и жанр.
Довольно быстро всем стало понятно, что 128 байт – очень уж небольшое место для хранения таких данных. И поэтому, со временем, появилась и успешно используется вторая версия данных – ID3v2.
В отличии от первой версии, теги v2 имеют переменную длину и размещаются в начале файла, что позволяет поддерживать потоковое воспроизведение. (Формат ID3v2.4 позволяет так же хранить данные и в конце файла).
Данные ID3v2 состоят из заголовка и последующих фреймов ID3v2. Например, в версии ID3v2.3 существует более 70 типов фреймов.
В данном случае вместе с заголовком ID3v2 (10 байт) – данные ID3v2 занимают 1024 байта.
После ID3v2-заголовка идут собственно теги. Подробный разбор чтения тегов ID3v2, как сказано выше, я решил не включать в эту статью.
Теперь у нас есть информация о наличии и длине тегов ID3 и мы можем приступать в разбору mp3-фрейма и понять-таки – где же хранится длительность. А заодно понять и всё остальное.
MP3-фрейм
Весь mp3-файл состоит из фреймов, которые можно извлекать только последовательно. Фрейм содержит в себе заголовок и аудио-данные. Поскольку мы не ставим себе целью написать прошивку для магнитофона – нас интересует именно заголовок фрейма.
О нем подробнее (куча таблиц и сухой информации)
Размер заголовка – 4 байта.
Режимы сжатия данных или какой бывает битрейт
Существует 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-файла для теста.