ID3v2的规格

问题描述 投票:1回答:2

基于http://id3.org/id3v2.3.0说明书中,帧头的布局是:

Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Flags          $xx xx

但是,同样的页面只是情侣低于行说,框架,允许不同类型的文本编码有一个文本编码描述帧的大小后直接字节。如果使用ISO-8859-1这个字节应该是$00,如果Unicode使用它应该是$01

这是令人困惑的,因为标志(2个字节)应帧大小信息后直接,所以我期望的编码字节是标志信息后。

所以,现在什么是正确的?

Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Flags          $xx xx
Encoding       $xx
Text

要么

Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Encoding       $xx
Flags          $xx xx
Text
encoding mp3 id3 id3v2
2个回答
4
投票

我认为,这实际上可能是一个 错误 情况下,在规范坏字眼。我发现两个图中显示完整的报头的例子ID3v2 Chapter Frame Addendum。该文件描述了两个新引入的帧类型,这是不感兴趣的手头上的问题。但幸运的是,它也含有嵌入的“名称/ SONGNAME /内容description'帧(TIT2)和”字幕/说明refinement'帧(TIT3)的例子,这两者都是文本框*:

根据该图中,标题帧(ID:TIT2)具有以下结构:第一the frame header

Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Flags          $xx xx

然后将其直接跟着ID-dependent fields

Text encoding  $xx Information    
<text string according to encoding>

这种布局是很有道理的我。如果你仍然对正确的布局怀疑,你可以检查出existing implementations的一个来源。

旁注:在ID3v2.4.0 specification他们改变了混乱的句子。

框架,允许不同类型的文本编码包含文本编码描述字节。

*只有允许不同类型的文本编码的帧具有文本编码描述字节。 不出所料,大部分是文本框


2
投票

帧报头是10个字节长。对于UID的4个字节用于帧的长度为4个字节(标题除外)2个字节用于标记。任何其他信息将在框架本身,而不是它的头部被发现。

措辞肯定是混乱的。

什么意思是,你想到哪里去阅读一个字符串,第一个字节告诉你会发生什么。 $ 00表示ISO-8859-1或一个字节编码$ 01意味着Unicode或2字节的编码。 $ 01之后无论是FF FE或FE FF通知对其中最重要字节。

我建议你使用一些MP3文件十六进制编辑器并剖析他们

© www.soinside.com 2019 - 2024. All rights reserved.