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 байт под скорость (стиль, тип) музыки (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 байт с названием (всего получается 90)
артист 60 Ещё 60 байт с исполнителем
альбом 60 Ещё 60 байт с названием альбома
скорость (стиль) музыки 1 Чем больше число, тем активней музыка («0» обозначает неизвестное значение)
жанр 30 30-символьная строка
время начала 6 Время в формате mmm:ss
время конца 6 Время в формате mmm:ss

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[править | править исходный текст]

В ответ на критику был разработан новый стандарт ID3v2 в 1998. Хотя он носит название ID3, он мало похож на первую версию ID3.

Теги ID3v2 переменной длины и обычно находятся в начале файла для поддержания потокового воспроизведения. Тег состоит из нескольких фреймов, каждый из которых содержит какие-либо метаданные. Например, фрейм TIT2 содержит название, а WOAR содержит ссылку на сайт артиста. Фреймы могут быть длиной до 16 МБ, в то время как весь тег может занимать до 256 MB. Проблемы с кодировками устранены благодаря поддержке UTF-16. Текстовые фреймы помечаются битом кодировки, хотя кракозябры всё ещё возможны, если использовать свою кодировку вместо UTF-16.

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

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

Каждый фрейм начинается идентификатором (4 символа, которыми могут быть заглавные латинские буквы и цифры), следующие 4 байта - размер, ещё два - флаги. Можно заметить, что заголовок фрейма также состоит из 10 байт.

Есть три версии ID3v2:

ID3v2.2 — первый широко используемый ID3v2. Используется трёхсимвольный идентификатор фрейма вместо 4х(TT2 для названия вместо TIT2). Среди популярных стандартов также есть v2.3 и v2.4, фреймы которых аналогичны v2.2. Этот стандарт считается устаревшим.

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

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

Разделы ID3v2[править | править исходный текст]

Впервые про разделение файла писали в декабре 2005, но пока эта возможность не распространена широко. Она позволяет пользователю быстро перейти к определённому месту или главе внутри аудиофайла или предоставляет возможность синхронизированного слайдшоу изображений во время воспроизведения. Типичное применение — Расширенные подкасты (англ.), которые поддерживаются ID3v2.3 или ID3v2.4 тегами[2].

Критика[править | править исходный текст]

Хотя различные версии ID3v2 концептуально похожи, оказалось достаточно сложно воплотить поддержку их всех. Есть несколько тонких и критических различий между версиями. Даже внутри версии структуры фреймов очень различаются. Например, фрейм TIT2 с названием и USLT с текстами песни требуют различных алгоритмов по извлечению данных. Другие форматы тегов, такие как APEv2 тег избегают этого и используют простые пары ключ-значение для отображения внутренней структуры каждого фрейма.

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

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

Устаревшие реализации[править | править исходный текст]

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

Windows Explorer[править | править исходный текст]

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

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

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

ID3 можно отредактировать множеством способов. На некоторых платформах это можно сделать прямо из файлового менеджера. К тому же множество проигрывателей позволяют редактировать один или много файлов. Редактирование множества файлов обычно называют «batch tagging». Есть также специальные программы, которые занимаются исправлением тегов и подобного рода операциями. Они обычно предлагают расширенные возможности группового редактирования в соответствии с регулярными выражениями.

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

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

См. также[править | править исходный текст]

Примечания[править | править исходный текст]

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

Ссылки[править | править исходный текст]