MP3歌曲名称在VLC中显示乱码的解决
- 0. 背景
- 1. 使用 kid3 查看和修改(推荐这个工具):
- 安装 `kid3`
- 运行
- 2. 用命令行工具 `mid3iconv`
- 安装
- 3. 如果想批量检查文件的 ID3 信息
- 4. 其他从claude.ai获取的信息
- ID3 标签的 Tag1 和 Tag2 代表的是不同版本的 ID3 标签格式:
- python3-mutagen 是一个 Python 音频元数据处理库,它的主要功能包括:
- 5. 感谢这个时代,有这么好的工具
0. 背景
从网上下载的mp3文件,有些曲目用VLC播放的时候,VLC标题栏中显示的歌曲名称是乱码。
此问题,在claude.ai(免费版)的帮助下得以解决。
一开始我还以为是文件名编码问题,和claude.ai描述的也不够清晰,因此初期不太有效。
直到我说:在VLC的标题栏显示的歌曲名称为乱码,并且只有部分歌曲显示有问题。claude.ai马上说“啊,原来是这样,这种情况应该是mp3文件内部的ID3标签编码问题。并且马上给出了建议解决方案:
1. 使用 kid3 查看和修改(推荐这个工具):
安装 kid3
sudo apt-get install kid3-qt
运行
kid3-qt
在 kid3 中你可以:
- 查看当前标签编码
- 批量转换标签编码
- 根据文件名更新标签
2. 用命令行工具 mid3iconv
安装
# 安装工具
sudo apt-get install python3-mutagen
# 转换单个文件
mid3iconv -e GBK "陈瑞 - 500年情缘.mp3"
# 批量转换当前目录下所有 MP3
mid3iconv -e GBK *.mp3
3. 如果想批量检查文件的 ID3 信息
# 安装 id3v2
sudo apt-get install id3v2
# 查看标签信息
id3v2 -l "陈瑞 - 500年情缘.mp3"
于是在claude.ai的帮助下,进入歌曲所在目录,执行如下命令:
mid3iconv -e GBK *.mp3
再用VLC播放,问题果然解决了。
4. 其他从claude.ai获取的信息
ID3 标签的 Tag1 和 Tag2 代表的是不同版本的 ID3 标签格式:
ID3v1 (Tag1):
最早的标签格式,位于 MP3 文件末尾
固定长度 128 字节
包含的字段有限:
歌名(30 字节)
艺术家(30 字节)
专辑(30 字节)
年份(4 字节)
注释(30 字节)
流派(1 字节)
局限性:
不支持 Unicode,只能用 ASCII 或单一编码
字段长度固定且较短
信息量有限
ID3v2 (Tag2):
更新的标签格式,位于 MP3 文件开头
可变长度,理论上最大可达 256MB
支持更多字段:
所有 v1 的字段
封面图片
歌词
作曲家
版权信息
自定义字段等
优势:
支持 Unicode 编码
字段长度可变
可存储更丰富的信息
支持多语言
所以如果你在 kid3 中看到某些 MP3 文件同时有 Tag1 和 Tag2,这表示这个文件同时包含了两种格式的标签信息。通常建议使用 ID3v2,因为它支持更好的中文显示和更丰富的信息。
python3-mutagen 是一个 Python 音频元数据处理库,它的主要功能包括:
-
支持读取和修改多种音频格式的元数据(标签):
- MP3 (ID3v1, ID3v2)
- MP4/M4A/AAC
- FLAC
- OGG
- WMA
- WAV
- AIFF
等多种格式
-
提供多个命令行工具:
# 已经用过的 mp3 标签编码转换工具
mid3iconv
# mp3 标签查看和编辑
mid3v2
# 音频文件元数据查看工具
mutagen-inspect
# 音频文件元数据编辑工具
mutagen-pony
- 可以用于 Python 编程:
# 简单的使用示例
from mutagen import File
from mutagen.mp3 import MP3
# 读取 MP3 文件信息
audio = MP3("song.mp3")
# 获取基本信息
print(audio.info.length) # 播放时长
print(audio.info.bitrate) # 比特率
# 读取标签
print(audio.tags['TIT2']) # 歌名
print(audio.tags['TPE1']) # 艺术家
- 主要用途:
- 音乐播放器开发
- 音频文件管理工具开发
- 音频标签批处理
- 音乐库管理软件
- 音频文件信息提取和统计
所以 mid3iconv
只是 mutagen 提供的众多工具之一,这个包的功能远不止于此。