Encoding ID3v2规范

Encoding ID3v2规范,encoding,mp3,id3,id3v2,Encoding,Mp3,Id3,Id3v2,根据规范,框架标题的布局为: 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
但同一页下面几行的内容表明,允许不同类型文本编码的帧在帧大小之后有一个文本编码描述字节。如果使用
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


我认为这实际上可能是规范中错误措辞的一个例子。我在显示完整标题的示例中发现了两个图表。该文档描述了两种新引入的帧类型,这两种类型对当前问题不感兴趣。但幸运的是,它还包含嵌入式“标题/歌曲名/内容描述”框架(
TIT2
)和“字幕/描述细化”框架(
TIT3
)的示例,它们都是文本框架*:

根据该图,标题框(ID:TIT2)具有以下结构: 第一:

然后紧接着是:

文本编码$xx信息
这个布局对我来说最有意义。如果您对正确的布局仍有疑问,可以查看其中一个布局的来源

旁注:在中,他们将令人困惑的句子改为

允许不同类型文本编码的帧包含一个文本 编码描述字节


*只有允许不同类型的文本编码的帧才有文本编码描述字节
毫不奇怪,其中大多数是文本帧帧头的长度为10字节。 UID为4字节 帧长度为4字节(不包括标头) 2个字节用于标志。 任何其他信息都将在帧本身中找到,而不是在其标题中

措辞确实令人困惑

这意味着,在您期望读取字符串的地方,第一个字节告诉您期望的内容。 $00表示ISO-8859-1或单字节编码 $01表示Unicode或2字节编码。 $01后跟FF FE或FE FF,以告知最重要的字节是哪个字节


我建议您在一些mp3文件上使用hexa编辑器并对其进行剖析

网站已关闭:(@LittleHelper我刚检查过,它对我有效。否则你可以使用回溯机器:关于读取额外内容字节的最后一条信息是金色的。谢谢!!清楚地解释了所有文本帧都应该有一个编码字节。§4还引入了另外两个值
$02
$03
Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Encoding       $xx
Flags          $xx xx
Text
Frame ID       $xx xx xx xx (four characters)
Size           $xx xx xx xx
Flags          $xx xx
Text encoding  $xx Information    
<text string according to encoding>