现在年轻人听在线音乐越来越多,可能无法理解磁盘中保留了一堆 Mp3 的老人为何对 ID3 一直情有独钟。2018年的时候,我写了一篇文章 使用Python读取Mp3的标签信息 当时仅实现了读取 id3v1 版本的标签信息,时隔4年我把代码优化了一下,目前的版本支持 id3v1、id3v2 版本的标签信息读取,送给有需要同学,毕竟让本地存放的 Mp3 文件都有正确的标签信息,还是很重要的。
ID3v2
ID3v1 的数据放在 MP3 文件的最后,以字符 TAG
开始,并且只有固定的 128字节。ID3v2 的数据放在 MP3 文件的开头,以字符 ID3
开头,这样的好处是对于流媒体的场景,在播放之前就能获得歌曲信息,并展示出来。目前从 id3官网 看到的协议最新版本为 ID3V2.4.0,已经是好多年没有更新发展了,不知道今后还会不会发生革命性的变化。
经过一番努力,我将自己的成果构建成了 Python 包并且发布到了 pypi 上,大家可以通过 mp3tag 访问到详细内容。
一些基础知识
因为要处理 Mp3 文件的内容,实际上读取出来的二进制序列,一个 0 或 1 是一个比特 bit,8个比特组成1个字节,也就是 ByteDance 字节跳动的字节。
读取出来的字节要转换成屏幕上各种各样的文字和符号,需要经过一个编码的过程,有很多的编码表,如 ASCIII、Unicode 汉字编码表、GBK等等。
如果我们不知道二进制序列所使用的编码,使用了不正确的编码表解码后,屏幕上就会变成乱码。