转到 Linux 作为日常使用的操作系统之后遇到的一个意外的问题是电脑里存的那些 mp3 歌曲信息有很多在新的播放器如 Clementine、Amarok 中会显示为乱码。这里记录的是批量对 mp3 标签信息进行转码的操作。
参考 qiumh 的方法可以通过命令行操作批量对文件夹中 mp3 文件的标签进行转换。安装一个使用 Python 语言编写的软件包 mutagen,因为要用到其中的 mid3iconv 这个管理音乐文件元数据的工具。这个包已经包含在 openSUSE 的官方源里面了,直接安装即可,
zypper in python-mutagen
安装后直接使用 mid3iconv 操作 mp3 文件,指令格式如下,
mid3iconv -e gbk *.mp3
如果想转换当前目录及所有子目录下的所有 mp3,可以组合使用 Linux 的命令行指令,
find . -iname "*.mp3" -execdir mid3iconv -e gbk {} +
其中,-e gbk
参数意思是把 GBK 编码的标签转换为 Unicode 编码,本身是 Unicode 编码的就不转换。如果需要转换其他编码格式的文件就修改 gbk 为别的代号,如 Big5。应该绝大多数能找到的 mp3 标签都是以 GBK/GB18030 编码的,使用 -e gbk
来处理就可以了,当然你也可以使用 -e gb18030
来处理。
据说转换后的元数据为 2.4 版的 ID3v2,编码格式为 uft-16。不过它会同时用 Unicode 编码填满 D3v1, ID3v2, APEv2 标签,但是 ID3v1 又不支持中文的 Unicode 编码,所以转换后的 ID3v1 标签全是问号。所以最好加上 –remove-v1
参数,转换后删除 ID3v1 标签。
mid3iconv -e gbk --remove-v1 *.mp3
使用 openSUSE 内置文件管理器 Dolphin 打开存放音乐文件的文件夹,然后按 F4 键开启 Dolphin 内置的命令行工具,粘贴以下命令到其命令行运行,
find . -iname "*.mp3" -execdir mid3iconv -e gbk --remove-v1 {} +
就可以将该目录下所有的 mp3 文件的内置标签转换为 unicode 编码格式。转换速度还是挺快,我的电脑里的 8.2 GB 的数据处理了大约 10 分钟。当然并不是所有 mp3 文件都需要处理,这个时间仅仅是给个大略的参考。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/linux-mp3-tag-sc-utf8/>。转载请保留此信息及相应链接。