【问题标题】:Problem in Reading ID3v2.3 tag?读取 ID3v2.3 标签时出现问题?
【发布时间】:2011-03-11 11:12:04
【问题描述】:

我在读取 ID3v2.3 标记时遇到问题。首先,我从 www.id3.org 阅读了有关 id3 标签的信息。 id3 标签的文档说它的前 3 个字节包含“ID3”,然后 2 个字节包含版本和修订号(例如 03 00),然后下一个第一个字节包含标志(不同步、扩展标头、实验指示符),然后是接下来的 4 个字节为大小保留。我能够读取大小。但是我的问题是,当我从当前位置向正向(我从 ID3 标签大小获取的大小)寻找指针时,这意味着我已经到达 ID3 标签的末尾,这意味着我们将读取的下一个字节是MP3 数据字节,但不是大小写。所以帮助我在 ID3 标签大小的帮助下检测 MP3 标题和 MP3 数据。我的第二个问题是 MP3 帧是与 ID3 帧混合还是与 ID3 标签完全分离。如果它与 ID3 标签是分开的,那么在 ID3 标签的末尾有一个第一个 MP3 帧。是对还是错?告诉我

【问题讨论】:

标签: c# id3


【解决方案1】:

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

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

即。 00000000 00000000 00000010 00000001 变成 0000 00000000 00000001 00000001

这可能是我对标签最困惑的事情,所以也许它也让你措手不及。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多