php mp3 ID3 теги ID3 tag

ID3 теги (ID3 tag) хранятся в последних 128-ми байтах mp3 файла. Благодаря этому их возможно читать без специальных компонентов.
Порядок распределения информации следующий:

  • Byte 1-3 = ID ‘TAG’
  • Byte 4-33 = Title
  • Byte 34-63 = Artist
  • Byte 64-93 = Album
  • Byte 94-97 = Year
  • Byte 98-127 = Comment
  • Byte 128 = Genre

Для получения тегов достаточно отформатировать бинарные строки в соответствии с приведенной последовательностью:


$f = fopen(’sample.mp3′, ‘rb’);
rewind($f);
fseek($f, -128, SEEK_END);
$tmp = fread($f,128);
if ($tmp[125] == Chr(0) and $tmp[126] != Chr(0)) {
// ID3 v1.1
$format = ‘a3TAG/ a30NAME/ a30ARTISTS/ a30ALBUM/a4YEAR/ a28COMMENT/ x1/C1TRACK/ C1GENRENO’;
} else {
// ID3 v1
$format = ‘a3TAG/ a30NAME/ a30ARTISTS/ a30ALBUM/ a4YEAR/ a30COMMENT/ C1GENRENO’;
}
$id3tag = unpack($format, $tmp);

Результатов будет ассоциативный массив со значениями тегов.

Post to Twitter Tweet This Post

  • 8 комментариев на “php mp3 ID3 теги ID3 tag”

    1. Саша Сплинтер пишет:

      Хех, а как насчет остальных тегов, скажем, пользовательских? Есть идеи?

    2. Саша Сплинтер пишет:

      Пардон, здесь вообще речь об ID3v1.

    3. saintist пишет:

      а какая задача стоит?

    4. Саша Сплинтер пишет:

      Да тут такое дело. Раз спросил, вот отвечаю :) Я залил на хост коллекцию музыкальную. Она у меня причесана, теги прописаны все ID3v2.4 аккуратно
      Пытаюсь заполнить mySQL базу для дальнейших веб-дел.
      Прописать требуется свойства потока битрэйт сэмплрэйт длительность
      Ну и выдернуть несколько тегов, среди которых в частности именованные мной специальные. Такие теги спецификация позволяет.

      Потратил дня три, думал обойдусь bash шибко он быстрый. Нашел токмо id3lib-utils, которые видят имена моих тегов, но читать не умеют.

      Нашел чудовищно глючную и огромную php-reader из состава Zend Framework и прихожу к выводу, что нужно осваивать чтение файла твоим способом :)

    5. Саша Сплинтер пишет:

      На самом деле конечно я ищу в конечном итоге полноценную либу, оторая умеет читать поток и теги id3v2.4
      Писать такую долговато… Вроде бы много шума поисковик дает, да только zend один

    6. saintist пишет:

      на мыло отписался

    7. Саша Сплинтер пишет:

      Спасибо, приятель!
      Я тут подумал, вдруг кто-то будет искать, как я и наткнется на этой место. Надеюсь, ты не возражаешь, что отпишу здесь ответ тоже.
      Значит так, идем на getid3.org

      Выкачиваем библиотечку и в качестве понимания, что умеет либа извлекать из файла пишем скрипт. А дальше радоваться :)

      analyze(“01.mp3″);
      getid3_lib::CopyTagsToComments($ThisFileInfo);
      print_r($ThisFileInfo);
      ?>

    8. saintist пишет:

      Пожалуйста!

      обращайся )

    Оставить комментарий