определить информацию о песне из mp3 тегов id3v2 - PullRequest
2 голосов
/ 16 июня 2011

У меня уже есть бинарные данные в формате mp3, я просто хочу узнать, как мне извлечь из них информацию.v1 легко, взять последние 128 символов, и все готово.но v2 имеет переменную длину.Документация говорит, что размер тега будет в заголовке, но я не смог найти его ни в одной из протестированных песен.

, но в любом случае я просто хочу извлечь информацию об альбоме и исполнителе ... jsut эти два с помощью javascript.давайте для простоты предположим, что у меня есть первые 2000 байтов песни Тейлора Свифта в переменной (ниже приведены фактические двоичные данные песни):

ID3!vTYER2010TIT2
Last KissMCDI¬E+96+4484+918B+E800+12F4B+1A636+1EC24+23A8E+2905F+2F7DD+33868+3914B+3D931+44555+4A27BTRCK13TCON(2)CountryPRIVPeakValue¡PRIVAverageLevel{ TPE2
Taylor SwiftPRIV)WM/MediaClassSecondaryIDPRIV'WM/MediaClassPrimaryID¼}`Ñ#ãâK¡H¤*(DPRIVWM/ProviderAMGPRIVWM/WMContentIDÇ1t>êDëþëPRIV"WM/WMCollectionID   ¨F}âH"Y#7 ÈPRIV'WM/WMCollectionGroupID  ¨F}âH"Y#7 ÈTPUBBig MachinePRIVWM/UniqueFileIdentifierAMGa_id=R  2026672;AMGp_id=P   816977;AMGt_id=T 22057912TALB
Speak NowTPE1
Taylor SwiftTLEN369120ÿûà@üK

теперь я могу легко найти альбом и имя исполнителя(последние две строки).и я также могу найти, где данные начинаются с JS довольно легко.просто найдите TALB и TPE1.просто.но как в мире я знаю, где данные заканчиваются ..?они могут или не могут быть смежными друг с другом в других песнях.они могут или не могут быть заглавными.как все остальные библиотеки выясняют, где заканчиваются данные?

также в начале нет «размера», как предполагает документация.

РЕДАКТИРОВАТЬ может кто-нибудь помочьменя, пожалуйста?мне действительно нужно это

Ответы [ 2 ]

1 голос
/ 02 июля 2011

В бинарном примере, который вы показываете, отсутствуют некоторые данные.Заголовок фрейма тега ID3 версии 2.4 имеет длину 10 байтов и состоит из следующих полей:

  • ID - 4 байта (например, TIT2)

  • Размер - 4 байта (синхронно в версиях> = 2.4)

  • Флаги - 2 байта

Поле размераговорит вам, сколько байтов данных в этом конкретном кадре.Аналогичным образом фактический заголовок тега также составляет 10 байтов:

  • ID - 3 байта (всегда ID3)

  • Версия - 2 байта (основная версия и ревизия, например, 0x04 0x00 обозначает версию тега 2.4.0)

  • Флаги - 1 байт

  • Размер - 4 байта(безопасен для синхронизации в версиях> = 2.3)

См .: http://id3.org/id3v2.4.0-structure

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

См .: Почему существует Synchsafe Integer?

0 голосов
/ 17 июня 2011

Попробуйте эту библиотеку , похоже, она делает то, что вам нужно.

...