我已经拥有了mp3二进制数据,我只想知道如何从中提取信息。 v1很简单,最后128个字符就完成了。但是v2的长度可变。文档说标签大小将在标题中,但我无法在我测试的任何歌曲中找到它。
但无论如何我只是想提取专辑和艺术家信息..这两个,用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
即可。简单。但我怎么知道数据在哪里结束..?在其他歌曲中它们可能相邻也可能不相邻。它们可能是也可能不是大写的。所有其他图书馆如何确定数据的结束位置?
一开始就没有'大小',正如文档所示。
编辑有人可以帮帮我吗?我真的需要这个
答案 0 :(得分:1)
您显示的二进制示例缺少一些数据。 ID3版本2.4标记帧头的长度为10个字节,由以下字段组成:
ID - 4个字节(例如TIT2)
大小 - 4个字节(版本中的同步安全> = 2.4)
标志 - 2个字节
size字段告诉您该特定帧中有多少字节的数据。类似地,实际的标签头也是10个字节:
ID - 3个字节(始终为ID3)
版本 - 2个字节(主要版本和修订版本,例如0x04 0x00表示2.4.0标签版本)
标志 - 1个字节
大小 - 4个字节(版本中的同步安全> = 2.3)
请参阅:http://id3.org/id3v2.4.0-structure
一旦您的脚本具有二进制数据,您就可以解析这些大小字段以确定完整标记的大小以及每个帧的大小。一旦你达到这一点,你就会遇到同步安全的整数。
答案 1 :(得分:-2)
尝试this library,看起来就像你需要的那样。