Программы для работы с ID3-тегами. Что нужно знать о ID3 тегах

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 байтов

Расширенный тег

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

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 байт не хватало для длинных названий, они урезались.

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

ID3v2

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

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

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

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

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

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

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

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

Разделы ID3v2

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

Критика

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

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

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

Устаревшие реализации

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

Windows Explorer

Применение в других форматах и альтернативы

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

Всякий файл обычно обзывается каким-нибудь словом, дабы из этого слова тотчас становилось ясно для чего он такой нужен и чего с ним делать. Но для некоторых файлов существуют не только название и само содержимое файла, но есть еще и так называемые метаданные. Это еще не содержимое, но уже и не название. Так вот ныне самый распостраненный аудиоформат 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-файлов в вашей фонотеке в порядок, о редакторах, утилитах и прочих программах для работы с тегами, будет поведано в другой статье.

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 -

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

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

ID3v1

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

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

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

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

Расширенный формат

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

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

Структура ID3

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

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

Расширенный тег

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

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

Lyrics3

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

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

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

Критика и комментарии

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

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

ID3v2

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

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

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

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

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

Версии ID3v2

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

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

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

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

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

«Разделы» ID3v2

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

Критика

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

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

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

Устаревшие реализации

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

Небольшая статья о ID3 тегах. Не вникая в технические подробности дается понятие о способе сохранения дополнительной информации о mp3 файле в середине самого mp3 файла.

ID3 теги это способ хранения информации о MP3 файле внутри самого файла. Таким образом гарантируется что информация о файле будет «путешествовать» вместе с ним, хоть на «бэкапный» CD, хоть с Вашего Мака на WindowsPC компьютер друга. iTunes может считывать эту информацию и отображать ее в плейлисте или в разделе Info окна о свойствах файла (вызывается нажатием Cmd+I (Mac) или Ctrl+I (Win)). ID3 теги это заголовок песни (Title), исполнитель (Artist), название альбома (Album), жанр (Genre), год записи (Year), номер трека в альбоме (Track Number), комментарии (Comment), и тому подобное. Эти данные Вы даже можете редактировать вручную или посредством AppleScript (язык сценариев AppleScript работает только на компьютерах «Макинтош»).
Изначально, ID3 теги содержали эту, только-текстовую информацию о музыкальном файле. Сейчас ID3 теги устроены таким образом что могут содержать такие данные как например детальная информация о файле добавленная музыкантом, графический обьект (например обложка альбома), URL на издателя и автора, текст песни, битрейт. Тем не менее, большинство MP3 плееров распознают ID3 теги «на старый манер», то есть игнорируя нововведения последних версий, что может привести к некоторым проблемам.
На данный момент существует пять версий ID3 тегов: v1.0, v1.1, v2.2, v2.3, и v2.4. Каждая последующая версия содержит определенные улучшения в хранении ID3 информации в то же время пытаясь быть обратно совместимой. Если Вы интересуетесь мельчайшими подробностями о устройстве ID3 тегов, посетите вебсайт ID3.org .

Приведем в качестве примера формат ID3 тегов версии 1.0 (самой первой версии):

Таким образом, в музыкальном файле отводится 125 байт под ID3 теги и записываются они в указанном выше порядке. Плеер (например Winamp или тот же iTunes) знает, что первые 30 байт это название песни (строка), вторые 30 байт - имя исполнителя (строка) и так далее.
Обратите внимание, что для названия композиции, исполнителя, названия альбома и комментарий отводится 30 байт на каждую запись, другими словами больше 30 символов вписать не удастся. Один байт отведенный для записи информации о жанре работает следующим образом: это может быть число от 0 до 79 которое соответствует названию одного из 80 жанров - Rock, Pop, R&B и так далее. Плеер считывает число и высвечивает соответствующий жанр. Кстати, а у Вас в коллекции есть такие экзотические жанры как «Primus», «Pranks», и «Fast Fusion»?
Так как отведенного под комментарий места размером в 30 символов было определенно мало, и вероятно мало кто им пользовался, было решено сократить комментарий до 28 символов и добавить тег номера трека (Track Number). Так появилась версия 1.1:

Все это, как и прежде, упаковано в 125 байт и по прежнему содержит ограничения в 30 символов на название композиции, имя исполнителя и название альбома.

В следующей версии ID3 структура была изменена таким образом, чтобы обеспечить максимальную гибкость при добавлении информации о треке и все еще сохранить совместимость с плеерами которые понимали только ID3 версии 1.х. Спецификация этой, 2.х версии ID3 значительно более сложная для иллюстрации по сравнению с 1.х, сложность обусловлена именно высокой «гибкостью» этой структуры. Попробуем описать ключевые особенности словами... Различная информация может храниться в «окнах» («frames»), по 256 байт каждое; каждое такое «окно» начинается с идентификатора который указывает чтО именно хранится в данном окне. Так как эти «окна» могут размещаться в произвольном порядке то плеер должен определить какая именно информация хранится в каждом конкретном окне (опять, если Вам очень очень ооочень интересно... ID3.org).
Подводя итог скажем, что ID3 теги версии 2.х могут содержать строки в формате Unicode длиной до 256 символов. Это значит что название песни, имя исполнителя, название альбома и комментарий позволяют быть достаточно длинными если Вы используете ID3 v2.x.

В дополнение к значительно более длинным строковым записям, в ID3 тегах версий 2.х появились элементы которые напрочь отсутствовали в ID3 v1.x: например, установленный уровень громкости для файла и специально настроенный эвалайзер - iTunes умеет с ними работать, но некоторые другие плееры могут не распознать эту информацию. Также имейте ввиду, что рейтинги (Ratings), счетчик кол-ва проигрываний (Play Count), дата последнего проигрывания (Play Date) - элементы появившиеся в iTunes 3, а также время начала воспроизведения (Start Time) и время конца воспроизведения (Stop Time) не сохраняются в ID3 тегах музыкального файла (для рейтинга в ID3 тегах вторых версий даже предусмотрено свое «окно», но iTunes не использует его потому что один и тот же файл может находиться в библиотеках разных пользователей, каждый из которых захочет поставить свой рейтинг). Не-ID3 данные о MP3 треках сохраняются в базе данных iTunes и поэтому не «путешествуют» вместе с музыкальными файлами. Вы можете найти практически всю информацию которая не записывается в ID3 теги в файле «iTunes Music Library.xml».

Ну, и если Вы намереватесь серьезно работать с ID3 тегами, то еще раз напомню ссылку на первоисточник информации о ID3: ID3.org .

Сергей Тихонов, для iPod-Club.com



Последние материалы раздела:

Изменение вида звездного неба в течение суток
Изменение вида звездного неба в течение суток

Тема урока «Изменение вида звездного неба в течение года». Цель урока: Изучить видимое годичное движение Солнца. Звёздное небо – великая книга...

Развитие критического мышления: технологии и методики
Развитие критического мышления: технологии и методики

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

Онлайн обучение профессии Программист 1С
Онлайн обучение профессии Программист 1С

В современном мире цифровых технологий профессия программиста остается одной из самых востребованных и перспективных. Особенно высок спрос на...