Floppy β Studio
Floppy β Studio

从MP3ID3v2标签读出附加图片(专辑封面)

最近在做一个音乐播放器(WinAPI+BASS),查遍了各大网站也没找到个标准的方法来读出专辑封面,最后找到了ID3标签的官方文档(https://id3.org),现在写篇文章记录下。

ID3v2(简单介绍)

标签头:

‘ID3’          3字节

版本号      1字节

副版本号   1字节

标志          1字节

标签大小   4字节

帧头:

帧标识        4字节

帧内容大小 4字节

标志            2字节

具体说明找别的文章看吧,这不是本文重点

APIC帧(APIC=Attached picture,即附加图片)

帧内容与图片之间还间隔有一小段数据,有的文章对此介绍的很模糊,有的干脆直接认为它有特定的字节数,但实际上并不是,由下面的三张图可看出

https://iruanp.com/fimg/ed154953c4a0c5bc5560dcb317ade8ad.png
https://iruanp.com/fimg/c4823b29b32806ba7989aa903a7a55cd.png
https://iruanp.com/fimg/2bb786a2e58561c8a9367b259f4a065b.png

这一小段的格式如下:

<帧头>(帧标识为APIC)

文本编码                          $xx

MIME 类型                        <文本字符串>$00(如'image/bmp')

图片类型                          $xx

描述                              $00 (00)

<图片数据>

文本编码表示描述字符串使用的编码方式,定义如下:

$00  ISO-8859-1,即Latin-1(拉丁语-1),兼容ASCII,GB2312也兼容Latin-1

$01  UTF-16LE,Windows使用的方案

$02  UTF-16BE

$03  UTF-8

MIME类型字符串为ASCII码,以NULL结尾

图片类型定义如下:

$00  其他

$01  32x32 像素“文件图标”(仅PNG)

$02  其他文件图标

$03  封面(正面)

$04  封面(背面)

$05  宣传单页

$06  媒体(例如 CD 的标签面)

$07  首席艺术家/首席表演者/独奏者

$08  艺术家/表演者

$09  指挥者

$0A  乐队/管弦乐队

$0B  作曲家

$0C  作词/文本作者

$0D  录制地点

$0E  录音期间

$0F  演出期间

$10  电影/视频截图

$11  一条颜色鲜艳的鱼(我是照字面翻译的,谁能告诉我这是个什么鬼)

$12  插图

$13  乐队/艺术家标识

$14  出版商/工作室标识

描述字符串以NULL结尾(\0个数由文本编码决定)

我的代码(很烂)

效果(顺便宣传宣传我的软件)

https://iruanp.com/fimg/ccf188b2351bf9c18d5f12ddea8f1ddb.png

(赶紧加群687741706或者751187033来下载吧,给您磕头了??)

#
首页      开发      C++      从MP3ID3v2标签读出附加图片(专辑封面)

发表回复

textsms
account_circle
email


Floppy β Studio

从MP3ID3v2标签读出附加图片(专辑封面)
最近在做一个音乐播放器(WinAPI+BASS),查遍了各大网站也没找到个标准的方法来读出专辑封面,最后找到了ID3标签的官方文档(https://id3.org),现在写篇文章记录下。 ID3v2(简单介绍…
扫描二维码继续阅读
2022-07-24