我正在开发一个针对Mp3文件的JavaScript(前端)ID3标签阅读器。我设法解析了文本框架。现在,APIC框架对我来说没有意义。
根据官方的规范,每个框架都是以这个开头的,这就是APIC框架的结构。
Frame ID $xx xx xx xx (four characters)
Size 4 * %0xxxxxxx
Flags $xx xx
这就是APIC的框架结构
<Header for 'Attached picture', ID: "APIC">
Text encoding $xx
MIME type <text string> $00
Picture type $xx
Description <text string according to encoding> $00 (00)
Picture data <binary data>
我附上了两首用Sublime Text打开的UTF-8编码歌曲的截图 所以,我希望看到的是 MIME type
就在 "APIC "字后面的第7个字节(帧大小+标志+APIC文本编码)。对第一个文件有效,但在第二个文件中,在实际的MIME类型之前多了两个字节。我有其他文件,在这些文件中 MIME type
是用几个奇怪的字节(不一定是2个字节)作为前缀。的 picture type
字节似乎更直接,尽管它后面是一个0x00字节(文档中并没有说它后面是$00),而且实际值有时会丢失。而且我也不知道这个 description
部分实际停止,而 picture data
开始。
你可以从前几十个字节创建一个字符串。之后使用类似这样的东西。
let mime = str.match(/image\/[a-z]+/)[0];
let binaryStartIndex = str.indexOf(mime) + mime.length + 3;