阅读ID3v2.3标签时出现问题?

时间:2010-07-03 16:19:14

标签: c# id3

我在阅读ID3v2.3标签时遇到问题。首先,我从www.id3.org上了解了id3标签。 id3标签的文档说它有前3个字节,其中包含'ID3',然后2个字节包含版本和修订号(例如03 00)&然后下一个第一个字节包含标志(非同步,扩展标头,实验指示器),然后为大小重新保留接下来的4个字节。我能读大小。但我的问题是当我从当前位置向前寻找我的指针(我从ID3标签大小获取的大小)时,这意味着我已经在ID3标签的末尾重新连接,这意味着我们将读取的下一个字节是MP3数据字节,但不是这种情况。所以帮我检测MP3标题和放大器借助ID3标签大小的MP3数据。我的第二个问题是,MP3帧与ID3帧混合在一起还是完全不同于ID3标签。如果它是从ID3标签分离的,那么在ID3标签的末尾有一个第一个MP3帧。是对还是不对?告诉我

2 个答案:

答案 0 :(得分:1)

您是否可能错误地读取了尺寸?四个大小的字节最左边的位为零。这留下一个只有28位。摘自ID3.org文档:

  

" ID3v2标签大小用。编码   最多的四个字节   有效位(位7)设置为零   在每个字节中,共计28个   位。归零的位被忽略,所以   表示一个257字节长的标签   如$ 00 00 02 01。"

即。 00000000 00000000 00000010 00000001 变         0000 00000000 00000001 00000001

对于标签来说,这可能是我最容易混淆的事情,所以也许它让你措手不及。

答案 1 :(得分:1)

未与ID3帧混合的MP3帧。请注意,在ID3v2.x标签中,标头大小值是一个同步安全整数,它本质上是一个整数,转换为每个字节的MSB为0的格式。相当于每7位后插入一个0。阅读维基百科:http://en.wikipedia.org/wiki/Synchsafe

您也可以在这里查看:Synchronization Safe Integer

在以下链接中,您可以找到ID3标签系统的概述,以及有关如何解码ID3标签的手册说明:What are ID3 Tags all about?