我在阅读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帧。是对还是不对?告诉我
答案 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?