ID3 (метаданные)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

Существует две несовместимых версии ID3: ID3v1 и ID3v2.

ID3v1[править | править вики-текст]

После создания MP3 формата появилась проблема с хранением данных о музыкальном файле. В MP3 это никак не предусматривалось. В 1996 Эрику Кэмпу пришла идея добавить участок памяти в файл, чтобы решить эту проблему.

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

Поскольку для данных отводилось немного места, в таких тегах можно было хранить только базовые сведения о песне: название, альбом, исполнитель, комментарий, по 30 байт на каждое поле, 4 байта для хранения года и одного байта под жанр, который можно было выбрать из заранее определённого списка из 80 значений (позднее Winamp расширил список своими 68 значениями). Если названия песен или альбомов содержали более тридцати символов, они обрезались. Конечно, из-за ограничений по размеру ни о каких расширенных возможностях хранения метаданных не могло быть и речи.

Единственное усовершенствование, которое было представлено в версии 1.1, было предложено Майклом Мутшлером (Michael Mutschler) в 1997: так как поле под комментарий всё равно слишком мало для хранения чего-либо полезного, было решено сократить его на два байта, чтобы использовать их для хранения номера трека.

Расширенный формат[править | править вики-текст]

Расширенный тег — это дополнительный блок данных перед ID3v1-тегом, который позволяет в три раза расширить некоторые поля ID3(v1-v1.1) и добавить несколько новых полей. Разработчики этого расширения попытались следовать идее наибольшей совместимости, поэтому начало всех тегов хранится в обычном ID3v1 теге, что позволяет читать или записывать данные любой программе, понимающей ID3v1, и только если выделенных байт не хватает, продолжение для каждого поля будет храниться в расширенном блоке (при условии что программа умеет туда записывать). Расширенный блок занимает 227 байт, находится перед ID3v1-тегом и начинается с метки TAG+. В нем было выделено дополнительно по 60 байт для полей название песни, исполнитель и альбом, 1 байт под скорость (стиль, тип) музыки (00=unknown, 01=slow, 02=medium, 03=fast, 04=hardcore), 30 байт под свободный ввод жанра, а также по 6 байт под начальное и конечное время музыки в файле (например, для плавного увеличения громкости). Поле комментария расширено не было и осталось 28-30 байт. Если ничего из перечисленного не используется, он автоматически опускается.

Это был неофициальный стандарт и поддерживался малым количеством проигрывателей.

Структура ID3[править | править вики-текст]

Строки разделяются нулями или пробелами. Неиспользуемые поля заполняются как пустые строки.

ID3(v1-v1.1): 128 байт

Поле Длина, байт Описание
Заголовок 3 «TAG»
Название 30 30-и символьное название
Исполнитель 30 30-и символьное имя исполнителя
Альбом 30 30-и символьное название альбома
Год 4 Строковая запись года
Комментарий 28[1] или 30 Комментарий
Нулевой байт[1] 1 Если номер трека присутствует, этот байт равен 0
Track[1] 1 Номер трека в альбоме или 0. Учитывается только если предыдущее поле равно 0
Жанр 1 Индекс в списке жанров или 255

Расширенный тег[править | править вики-текст]

Помещается перед ID3v1 тегом: 227 байт

Поле Длина, байт Описание
Заголовок 4 «TAG+»
Название 60 Дополнительные 60 байт для поля «Название» ID3v1
Исполнитель 60 Дополнительные 60 байт для поля «Исполнитель» ID3v1
Альбом 60 Дополнительные 60 байт для поля «Альбом» ID3v1
Скорость (стиль, тип) музыки 1 Чем больше число, тем «активней» музыка («0» обозначает неизвестное значение, «1» - slow, «2» - medium, «3» - fast, «4» - hardcore)
Жанр 30 30-и символьная строка
Время начала 6 Время в формате mmm:ss
Время конца 6 Время в формате mmm:ss

Размеры полей ID3v1 с учётом расширенного тега составят:

Поле Размер, байт
Название 90
Исполнитель 90
Альбом 90

Lyrics3[править | править вики-текст]

Lyrics3 — это первая попытка внедрить текст песни внутрь MP3 файла, реализованная Петром Стрнадом (Petr Strnad) во времена ID3v1.x. Текстовый блок помещался между строками LYRICSBEGIN и LYRICSEND в конце файла, перед тегом ID3v1.x (если его не было, то он создавался). Текст был в кодировке ISO-8859-1, максимальная длина 5100 байт, строки разделялись символами CR+LF, была поддержка временны́х меток.

Со временем был выпущен формат Lyrics3 v2.00, который имел больше возможностей (в частности, значительно увеличился размер блока, появились дополнительные поля и возможность вставки изображения). Блок версии 2.00 помещался между строками LYRICSBEGIN и LYRICS200 и имел переменную длину, которая записывалась в последних 6-ти байтах перед конечной строкой LYRICS200.

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

Критика и комментарии[править | править вики-текст]

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

Предложение закрепить жанр за ограниченным числом альтернатив также нашло много противников. Многим просто не нравился предложенный список, в котором не отводилось места под такие жанры, как минимализм или барокко.

ID3v1 также не хватало интернационализации. Он утверждал, что все строки должны храниться в ISO 8859-1, но на практике пользователи часто используют национальную кодировку, поэтому нередко им приходилось видеть «кракозябры».

ID3v2[править | править вики-текст]

В ответ на критику ID3v1 был разработан новый стандарт - ID3v2. Стандарт опубликован 26 марта 1998 года и полностью отличается от ID3v1.

Теги ID3v2 имеют переменную длину и располагаются в начале[2] или конце[3] файла. Тег состоит из нескольких "фреймов". Каждый фрейм содержит какие-либо метаданные. Например, фрейм «TIT2» содержит название произведения, а фрейм «WOAR» - ссылку на сайт исполнителя. Максимальный размер фрейма ограничен 16 МБ. Максимальный размер тега не может превышать 256 MB. Текст хранится в кодировках UTF-16[2] или UTF-8[3]. Текстовые фреймы помечаются битом кодировки.

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

Файл, содержащий тег в формате IDv2, начинается с последовательности символов «ID3». Эти символы являются частью заголовка ("Header") тега. Заголовок состоит из 10 байт и содержит поля, перечисленные ниже. Порядок байт в ID3v2 - big endian.

Поле Смещение, байт Длина, байт Описание
Сигнатура 0 3 «ID3»
Версия 3 2 2, 3 или 4
Флаги 5 1
Размер 6 4

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

Поле Смещение, байт Длина, байт Описание
Идентификатор 0 3[4], 4[5] Тип фрейма, заглавные латинские буквы и цифры
Размер 3 4
Флаги 5 2

Версии ID3v2[править | править вики-текст]

  • ID3v2.2 (26 марта 1998 года)
  • ID3v2.3 (3 февраля 1999 года)
  • ID3v2.4 (1 ноября 2000 года)

ID3v2.2 — первая широко используемая версия ID3v2. Ныне считается устаревшей. Используется 3-х символьный идентификатор фрейма вместо 4-х («TT2» для фрейма с названием произведения вместо «TIT2»).

Форматы фреймов ID3v2.2, ID3v2.3 и ID3v2.4 немного отличаются.

ID3v2.3 - третья и наиболее распространённая на сегодняшний день версия. Расширяет размер поля «Идентификатор» до 4 байт, добавляет поле «Количество фреймов». Фрейм может содержать несколько значений, разделённых знаком «/».

ID3v2.4 — четвёртая (текущая) версия. Позволяет хранить строки в кодировке UTF-8. Для разделения значений используется нулевой байт, а символ «/» можно использовать в тексте. Появилась возможность добавить тег в конец файла, как в ID3v1.

"Разделы" ID3v2[править | править вики-текст]

В декабре 2005 предложены[6] расширения, позволяющие привязать текст и изображения ко времени воспроизведения. Первое позволяет создавать оглавления для быстрого перехода к определённому месту (или главе) внутри аудио файла. С помощью второго можно организовать показ изображений (слайдшоу). Типичное применение — подкастинг.

Критика[править | править вики-текст]

Из-за различий в версиях ID3v2 многие проигрыватели до сих пор не реализовали поддержку всех версий тегов. Проблема в том, что в разных версиях используются разные структуры данных. Например, для извлечения данных из фреймов «TIT2» (с названием произведения) и «USLT» (с текстом песни) требуют разные алгоритмы. В тегах других форматов, например в тегах APEv2, данные хранятся в виде пар ключ-значение и такой проблемы нет.

ID3v2 хранит информацию о аудио данных. Например, во фрейме «TLEN» хранится длина песни, а во фрейме «AENC» - информация о методе сжатия.

В версиях ID3v2.2 и ID3v2.3 тег должен храниться в начале файла, что упрощает потоковое воспроизведение, но требует перезаписи всего файла при изменении полей тега. Версия ID3v2.4 позволяет поместить данные тега в конец файла. Редакторы тегов могут оставлять свободное пространство в полях тега, чтобы предотвратить перезапись файла в случае увеличения тега, но эта операция не является стандартом: требования к тегам очень различаются, особенно если к музыке прилагается «APIC» (ассоциативные изображения).

Устаревшие реализации[править | править вики-текст]

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

Windows Explorer[править | править вики-текст]

Windows Explorer[какой?] поддерживает теги версий ID3v1 и ID3v2.3.

Проводник не может прочитать тег версии ID3v2.4, а при попытке его редактирования выдаёт ошибку 0x8007000D.

Проводник читает и записывает тег ID3v1, но с особенностями. Если в MP3-файле записан только тег ID3v1, проводник его прочитает, а при редактировании - запишет данные в ID3v1 и добавит тег ID3v2.3. Редактирование тега ID3v1 не поддерживается. Если в файле записаны теги ID3v1 и ID3v2.3, проводник прочитает версию ID3v2.3, а при редактировании данные продублирует в оба тега. Если в MP3-файле не было никаких тегов, Windows Explorer запишет только тег ID3v2.3.

Редактирование ID3[править | править вики-текст]

Существует множество программ для редактирования тегов ID3:

Возможности:

  • правка нескольких файлов одновременно («batch tagging»);
  • поиск и замена.

Применение в других форматах и альтернативы[править | править вики-текст]

Теги ID3 были созданы для включения в файлы формата MP3 и MP3Pro, но могут использоваться и в файлах других форматов. AIFF - единственный формат, начавший широко использовать тег ID3v2; формат основан на RIFF; тег ID3 хранится внутри чанка с именем «ID3». WAV (тоже основан на RIFF) может включать тег ID3, но эта возможность не используется. «Broadcast WAV» - единственная теговая система, широко использующаяся WAV. Форматы Windows media (ASF, WMA, WMV) имеют свои форматы тегов, но также поддерживают встраивание ID3 в виде атрибута[7]. Предусмотрена возможность включения ID3 в MP4 [8], но большинство программ её не поддерживают. Другие форматы, основанные на контейнерах, используют собственные теговые системы. Например, Vorbis использует Vorbis comment, и не поддерживает встраивание ID3, так как ID3 может нарушить структуру контейнера.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. 1 2 3 Номер дорожки записывается в последние 2 байта комментария. Если размер комментария больше 28 символов, номер трека недоступен
  2. 1 2 Для ID3v2.2, ID3v2.3, ID3v2.4
  3. 1 2 Для ID3v2.4
  4. Для ID3v2.2
  5. Для ID3v2.3 и ID3v2.4
  6. Newell, C. "ID3v2 Chapter Frame Addendum". ID3.org (2 December 2005). Проверено 6 февраля 2008. Архивировано из первоисточника 15 марта 2012.
  7. "Windows Media Developer Center: ID3 Tag Support". Microsoft Developer Network. Microsoft. Проверено 6 февраля 2008. Архивировано из первоисточника 15 марта 2012.
  8. The 'MP4' Registration Authority

Ссылки[править | править вики-текст]