读取 ID3v2.3 标签时出现问题?
我在读取 ID3v2.3 标签时遇到问题。首先,我从 www.id3.org 上阅读了有关 id3 标签的信息。 id3 标签的文档说它有前 3 个字节,其中包含“ID3”,然后 2 个字节包含版本和修订号(例如 03 00)和然后下一个第一个字节包含标志(不同步、扩展头、实验指示符),然后接下来的 4 个字节被保留为大小。我能够读取尺寸。但我的问题是,当我从当前位置向前寻找指针时(我从 ID3 标签大小中获取的大小),这意味着我已经到达 ID3 标签的末尾,这意味着我们将读取的下一个字节是MP3 数据字节,但情况并非如此。所以请帮助我检测 MP3 标头和MP3 数据借助 ID3 标签大小。我的第二个问题是 MP3 帧是否与 ID3 帧混合,或者它是否与 ID3 标签完全分开。如果它与 ID3 标签分开,那么在 ID3 标签的末尾有第一个 MP3 帧。是对是错?告诉我
I have a problem in reading an ID3v2.3 tag. First of all I read about id3 tags from www.id3.org. The documentation of id3 tags says it has first 3 bytes which contain 'ID3' then 2 bytes contain version and revision number(for example 03 00) & then next first byte contain flags(Unsynchronisation, Extended header, Experimental indicator) then next 4 bytes is reserverd for size. I am able to read size. But My problem is that when I seek my pointer from current position to forward direction (size which I have taken from ID3 tag size), so it means I have reaached at the end of ID3 tag, It means so next byte we will read is the MP3 data byte, but it is not case. So Help me in detecting MP3 header & MP3 data with the help of ID3 tag size. And My second question is that Is MP3 frames are mixed with ID3 frames or Is it completely seprate from ID3 tag. If it is seprate from ID3 tag so in the end of ID3 tag there is a first MP3 frame. Is is right or not? Tell me
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否可能错误地读取了尺寸?四个大小字节的最左边位被清零。这样就只剩下 28 位了。摘自 ID3.org 文档:
即 00000000 00000000 00000010 00000001
变成
0000 00000000 00000001 00000001
这可能是我对标签最困惑的事情,所以也许它也让你措手不及。
Is it possible that you incorrectly read the size? The four size bytes have their leftmost bit zeroed. This leaves one with only 28 bits. Taken from the ID3.org documentation:
ie. 00000000 00000000 00000010 00000001
becomes
0000 00000000 00000001 00000001
This was probably the most confusing thing for me in regards to the tags, so perhaps it caught you off guard as well.
MP3 帧不与 ID3 帧混合。请注意,在 ID3v2.x 中,标签头大小值是一个同步安全整数,本质上是一个整数转换为每个字节的 MSB 为 0 的格式。相当于每 7 位后面插入一个 0。阅读维基百科: http://en.wikipedia.org/wiki/Synchsafe
您也可以看一下这里:同步安全整数
在下面的链接中,您可以找到一个ID3 标签系统概述以及如何解码 ID3 标签的手动说明:ID3 标签是什么?
MP3 frames at not mixed with ID3 frames. Please note that in ID3v2.x tag header size value is an synchronization safe integer, which is essentially an integer converted into a format in which the MSB of each byte is 0. It is equivalent to insert one 0 after each 7 bits. Read in wikipedia: http://en.wikipedia.org/wiki/Synchsafe
Also you can have a look at here: Synchronization Safe Integer
In the below link you can find an overview of the ID3 Tag system and also a manual description on how to decode the ID3 Tags: What are ID3 Tags all about?