Что нужно знать о ID3 тегах? Все о метаданных (тегах) для аудио

6 сентября 2010 в 15:53

Внутри MP3. А как оно всё устроено?

  • Алгоритмы

Однажды мне понадобилось решить простенькую (как мне тогда казалось) задачу – в PHP-скрипте узнать длительность mp3-файла. Я слышал о ID3 тегах и сразу подумал, что информация о длительности хранится либо в тегах, либо в заголовках mp3-файла. Поверхностные поиски в интернете показали что за пару-тройку минут решить эту задачу не получится. Поскольку от природы я довольно любопытен а время не поджимало - решил не использовать сторонние инструменты а разобраться в одном из самых популярных форматов самостоятельно.

Если Вам интересно, что там внутри – добро пожаловать под кат (трафик).

В данной статье мы не будем подробно останавливаться на извлечении ID3v2 тегов – это можно вынести в отдельную статью, так как там есть различные нюансы. А так же на фрагментах заголовков, которые практически не используются в настоящее время (например, часть Emphasis заголовка mp3-фрейма). Так же мы не рассматриваем структуру самих аудиоданных - тех самых, которые слышим из колонок.

ID3 теги

ID3 (от англ. Identify a MP3) - формат метаданных, наиболее часто используемый в звуковых файлах в формате MP3. ID3 подпись содержит данные о названии трека, альбома, имени исполнителя и т. д., которые используются мультимедиапроигрывателями и другими программами, а также аппаратными проигрывателями, для отображения информации о файле и автоматического упорядочивания аудиоколлекции.

Wikipedia

Существует две абсолютно разных версии 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-фрейм

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

О нем подробнее (куча таблиц и сухой информации)

Размер заголовка – 4 байта.

Описание:

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

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

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

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

ABR (average bitrate) – усредненный битрейт. Это понятие используется только при кодировании файла. На «выходе» получается файл с VBR.

CBR

Если файл закодирован с постоянным битрейтом – то мы уже можем наконец-то! получить длительность нашего трека по следующей формуле:
Длительность = Размер аудиоданных / Битрейт (в битах!) * 8

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

VBR

Необходимо пояснить – как определить режим сжатия. Всё просто. Если файл сжат с 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 -

The ID3 tag works as the metadata container, which helps people to store all the relevant information about the audio file including the track title and number, the album cover, the artist, etc. All the information in ID3 tags can be edited as you want, but you have to do it with an ID3 tag editor.

The main function of these editors is to manage the information stored and organize it to make it easy for people to understand. In this article, you are going to see top five free ID3 tag editors which are helpful for you.

Tool 1. ID3 Tag Editor

Operating Systems Supported: Windows Vista and Windows XP
System Requirements:
To run this application you need a computer with these requirements:
1. RAM: It is advisable to be 512 MB or something over it, and the minimum demand is 256 MB.
2. Processor: At least 500 MHz.
Rate: 4 Stars out of 5
Introduction:
It is a freeware compatible with ID3V1 and ID3V2, which allows people to edit the ID3 tags embedded. You can find the specific tags easily with it. It is efficient for both commercial and personal purposes because of the powerful functions of it.
Main features:
1. You can use the synchronized album and title show when playback.
2. It enables you to add comments to the audios.
3. It supports the album cover embedded.
4. It is compatible with the latest ID3 versions.
5. You can run this software on either Windows 32-bit or Windows 64-bit.
Pros:
1. It is free of charge.
2. There are no ads built-in and you don’t have to worry about spywares.
3. The interface of it is very friendly and intuitive so you can learn to use it soon.
4. You are allowed to use the synchronized album and title show when playback.
Cons:
It doesn’t support batch edit.

Tool 2. MP3Tag


Operating System Supported: Windows
Rate: 4 out of 5 stars
Introduction:
It is a free application for ID3 tags editor with an user-friendly interface. The ID3 tags it can edit include track titles, artists, albums, track numbers, release time and so on. You can find it sweet because it shows the basic tags on the customizable panel, and stores the others on a separate panel. It is easy to insert a proper picture of the audios owning to the online database “lookups”.
Pros:
1. It is able to edit metadata in the formats of WMA, ID3V1, ID3V2.3, ID3V2.4, APE tags and iTunes MP4.
2. It can rename the audio files automatically without fault.
3. You can import tags from databases it supports.
4. It is able to do quantity edit for you.
5. You can edit the album covers of audios with it.
6. It can help you to create a new playlist while editing files.
7. It supports Unicode characters.
Cons:
1. There is no version for mobile devices.
2. The function which allows people to add the lyrics column is limited. You can only add 6 lines at most to the front panel.

Tool 3. ID3-TagIT


Operating Systems Supported: Windows
Rate: 4 out of 5 stars
Introduction:
This is a good software which helps you to edit ID3 tags of the audio files. The most time-saving function of it is that it can analyze and sort the information embedded. And you can edit ID3 tags in batch. All the features above are convenient for you.
Pros:
1.It supports metadata of both ID3V1 and ID3V2, and it can deal with more than one genres and comments in ID3V2 tags.
2.You can do batch edit with it.
3.The interface is easy to read, and the software itself is easy to use.
It helps users to save audio files into an organized folder.
Cons:
There is no constant upgrade of this software so you can only use the versions without update.

Tool 4. TigoTago


Operating System Supported: Windows including Windows XP, Vista, Windows 7 and 8.
Rate: 4 out of 5 stars
Introduction:
It is a special editor comparing the editors above, because it is based on the spreadsheet. But that doesn’t belittle the virtues. As an efficient software, it supports batch edit so that you can save a lot of time with it. And besides the basic tags, it can also edit the extended tags.
Pros:
1. There are some online database that it supports. And it can connect to HTTP with the proxy authorization.
2. You can preview the results of the editing action.
3. You can find all the answers to the questions about this application on the Help Forum, which are easy to understand and sometimes with screenshots.
Cons:
1. It is short of the traditional menus because it is a spreadsheet based editor.
2. There are no version for mobile devices till now.

Tool 5. Stamp ID3 Tag Editor


Rate: 3 out of 5 stars
Introduction:
There are two kinds of versions of this software, both the free trial version and paid complete version, and the paid one also charges a reasonable price. It is able to edit ID3 tags like album covers, track titles and numbers, artists, release year and comments. You will get a ordered and time-saving audio file library with the help of this application.
Pros:
1. It supports various metadata format including that stored in WAV and MP3.
2. You can do quantity edit with it.
3. You can add comments as you like.
Cons:
1. There is some undesired add-ons attached.
2. It doesn’t allow its users to type any space blank, but you can use the spacebar instead.
3. You can’t add your own category or genre to the tags, and you are asked to choose one from the offered options.

Всякий файл обычно обзывается каким-нибудь словом, дабы из этого слова тотчас становилось ясно для чего он такой нужен и чего с ним делать. Но для некоторых файлов существуют не только название и само содержимое файла, но есть еще и так называемые метаданные. Это еще не содержимое, но уже и не название. Так вот ныне самый распостраненный аудиоформат mp3 имеет в себе систему тегов. В тегах описывается что это за музыка — как называется композиция, кем сыграна, в каком году, в каком жанре и в составе какого альбома значится и под каким номером. Говоря лаконичным языком самих mp3-тегов:

  • название (title);
  • исполнитель (artist);
  • год (date);
  • жанр (genre);
  • альбом (album);
  • трек (tracknumber).

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

Язык системы тегов ID3

Музыкальные проигрыватели, как программные, так и аппаратные обычно пытаются считать данные о музыкальном треке именно из тегов файла чтобы представить вам проигрываемую композицию. А также если вам вздумается разыскать нужную песню — искаться она проигрывателем будет тоже по ним. Официальным языком система тегов именуется ID3 (IDentify an mp3), что намекает. Конкретней — ныне используется ID3v2 — то бишь стандарт метаданных второй версии.

Откуда берутся «крякозябры»?

Итак, почему же в некоторых песнях любимый проигрыватель вместо названий и/или исполнителей выдает «абракадабру»(«кракозябры», «китайскую грамоту», и.т.д)?
Ответ прост. По той же самой причине, по коей мы имеем к себе в монитор «кракозябры» в любых других местах — битая кодировка.

Случается такое, когда русский текст в одной кодировке мы пытаемся прочитать в другой. Соответственно русские теги mp3 в музыкальных файлах и показываются криво. Потому что большинство музыки в сети, откуда мы ее качаем, имеет свои кириллические теги в кодировке, отличной от признанной стандартом UTF-8, то есть в кодировке windows — cp1251, koi8-r, или еще какой чертовщине.

К примеру, с такой проблемой пользователь лицом прям сталкивается когда хочет послушать добытую в интернетах музыку в linux-системах, Ubuntu скажем. Я и сам с этим сталкиваюсь постоянно, являясь юзером оной — каждый скачанный альбом с русскими тегами необходимо перекодировать, дабы любимый мною проигрыватель Rhythmbox мог красиво показывать что он за музыку играет и, что более важно, мог мне находить в фонотеке музыку, которую я пожелаю.

Более того, если 98% музыки русскоязычных исполнителей идет с кривыми тегами, то примерно половина из них скачивается еще и с названиями файлов в кривой кодировке. Что тоже причиняет некоторые неудобства. Но излечимо, причем легко.

Еще один момент — бывает что mp3-файлы совсем не имеют тегов. А хотелось бы. Все обозначенные в данной статье проблемы запросто решаемы. Существуют редакторы и утилиты для изменения и перекодировки тегов. И о простых и удобных способах проведения операций по приведению русских тегов mp3-файлов в вашей фонотеке в порядок, о редакторах, утилитах и прочих программах для работы с тегами, будет поведано в другой статье.