Проблема с чтением тега ID3v2.3? - PullRequest
0 голосов
/ 03 июля 2010

У меня проблема с чтением тега ID3v2.3.Прежде всего, я прочитал о тегах id3 с www.id3.org.Документация по тегам id3 гласит, что у него есть первые 3 байта, которые содержат 'ID3', затем 2 байта содержат версию и номер редакции (например, 03 00), а затем следующий первый байт содержит флаги (несинхронизация, расширенный заголовок, индикатор эксперимента), затем следующие 4 байтазарезервирован для размера.Я умею читать по размеру.Но моя проблема в том, что когда я ищу свой указатель из текущей позиции в прямом направлении (размер, который я взял из размера тега ID3), это означает, что я достиг конца тега ID3, это означает, что следующий байт, который мы будем читать,байт данных MP3, но это не так.Так что помогите мне в определении заголовка MP3 и данных MP3 с помощью размера тега ID3.И мой второй вопрос: смешаны ли кадры MP3 с кадрами ID3 или они полностью отделены от тега ID3?Если он отделен от тега ID3, то в конце тега ID3 появляется первый кадр MP3.Это правильно или нет?Скажи мне

Ответы [ 2 ]

1 голос
/ 09 мая 2011

MP3-кадры не смешиваются с ID3-кадрами.Обратите внимание, что в качестве размера заголовка тега ID3v2.x используется безопасное для синхронизации целое число, которое по существу является целым числом, преобразованным в формат, в котором MSB каждого байта равен 0. Это эквивалентно вставке одного 0 после каждых 7 битов.Читайте в википедии: http://en.wikipedia.org/wiki/Synchsafe

Также вы можете посмотреть здесь: Синхронизация Safe Integer

В ссылке ниже вы можете найти обзор тега ID3Система, а также руководство по декодированию тегов ID3: Что такое теги ID3?

1 голос
/ 15 апреля 2011

Возможно ли, что вы неправильно прочитали размер?У четырех байтов размера самый левый бит обнуляется.Это оставляет только 28 бит.Взято из документации ID3.org:

"Размер тега ID3v2 кодируется четырьмя байтами, где старший
значащий бит (бит 7) устанавливается в ноль в каждом байте, что составляет общее количество28 бит. Обнуляемые биты игнорируются, поэтому тег длиной 257 байт представляется как $ 00 00 02 01. "

т.е.00000000 00000000 00000010 00000001 становится 0000 00000000 00000001 00000001

Это, наверное, было самым запутанным для меня в отношении тегов, так что, возможно, это застало вас врасплох.

...