如何通过Python获取MP3文件的自定义标签?
音频自定义标签读取方案解答
一、mutagen、eyeD3完全可以实现自定义标签读取需求
你之前没读到自定义UUID标签,是因为这类非标准标签不会和艺术家、时长这类标准字段放在同一级属性下,需要到对应存储自定义字段的结构中检索:
mutagen使用示例
mutagen对不同音频格式的自定义标签存储逻辑不同:
- MP3(ID3格式):自定义标签存储在
TXXX类型的ID3帧中
from mutagen.id3 import ID3 audio = ID3("测试文件.mp3") # 遍历所有自定义TXXX帧 for frame in audio.values(): if frame.FrameID == "TXXX": # desc是自定义标签的名称,text是对应值 print(f"标签名:{frame.desc},标签值:{frame.text[0]}") # 确认UUID对应的标签名后,可直接定向读取,比如标签名为CUSTOM_UUID时 # uuid_val = audio.get("TXXX:CUSTOM_UUID").text[0]
- FLAC/OGG等使用VORBIS评论的格式:自定义标签直接以键值对形式存在标签字典中
from mutagen.flac import FLAC audio = FLAC("测试文件.flac") # 直接按键名读取即可 uuid_val = audio.get("你的UUID标签名", [None])[0]
eyeD3使用示例
eyeD3仅支持MP3格式的ID3标签读取,自定义标签存在user_text_frames属性中:
import eyed3 audio = eyed3.load("测试文件.mp3") for frame in audio.tag.user_text_frames: print(f"标签名:{frame.description},标签值:{frame.text}")
二、其他可选实现工具
如果需要命令行快速读取,可使用以下工具:
id3v2:专门处理MP3的ID3标签,执行id3v2 -l 音频文件路径即可列出所有标签,包括自定义TXXX帧ffprobe:属于FFmpeg套件,几乎支持所有常见音频格式,读取指定标签的命令参考:ffprobe -v error -show_entries format_tags=你的UUID标签名 -of default=noprint_wrappers=1:nokey=1 音频文件路径mediainfo:全格式多媒体信息查看工具,命令行和GUI版本都有,可直接列出所有自定义标签字段
内容的提问来源于stack exchange,提问作者fasola
相关产品推荐
相关产品推荐

