You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mutagen编辑MP3元数据后iTunes显示时长翻倍问题求助

MP3元数据编辑后iTunes时长翻倍问题解决方案

问题描述

使用Python的mutagen模块编辑MP3的标题、艺术家、专辑等元数据后,iTunes中显示的时长翻倍(变为7:07),但文件资源管理器和VLC中仍显示正常时长3:39。

当前代码

def info_of_mp3(dictionary_of_info, filenamefull):
    from mutagen.id3 import ID3, TIT2, TPE2, TALB, TPE1, TYER, TDAT, TRCK, TCON, TORY, TPUB, USLT
    dictionary_of_info = {   # example info input
    "TIT2":"Idli Chutney",  #TITLE
    "TPE1":"Sean Roldan",  #ARTIST
    "TALB":"None"  #ALBUM
}
    filenamefull = "Sean Roldan - Idli Chutney.mp3"  #example filename input
    SAVE_PATH = "C:/directions/to/my/folder"
    audio = ID3(SAVE_PATH+"/"+filenamefull)
    
    audio.add(TIT2(encoding=3, text = dictionary_of_info["TIT2"]))    #TITLE
    audio.add(TPE1(encoding=3, text = dictionary_of_info["TPE1"]))    #ARTIST
    audio.add(TALB(encoding=3, text = dictionary_of_info["TALB"]))    #ALBUM

    audio.save(v2_version=3)

截图说明

  • 文件资源管理器显示正常时长:
    文件资源管理器显示时长3:39
  • iTunes显示时长翻倍:
    iTunes显示时长7:07

解决方案

1. 替换add方法为直接赋值,避免重复标签

mutagen的add方法会追加标签而非覆盖,若原文件已有对应标签,重复执行会导致标签重复,iTunes解析时出错。修改代码如下:

# 替换原add语句为直接赋值
audio["TIT2"] = TIT2(encoding=3, text=dictionary_of_info["TIT2"])
audio["TPE1"] = TPE1(encoding=3, text=dictionary_of_info["TPE1"])
audio["TALB"] = TALB(encoding=3, text=dictionary_of_info["TALB"])

2. 清理现有重复标签

若文件已存在重复标签,先清理再写入:

audio = ID3(SAVE_PATH+"/"+filenamefull)
# 删除目标标签(如果存在)
for tag_id in ["TIT2", "TPE1", "TALB"]:
    if tag_id in audio:
        del audio[tag_id]
# 再添加新标签
audio["TIT2"] = TIT2(encoding=3, text=dictionary_of_info["TIT2"])
# ...其余标签赋值

3. 尝试保存为ID3v2.4版本

iTunes对ID3v2.4的兼容性更稳定,修改保存语句:

audio.save(v2_version=4)

4. 修复MP3帧头错误

若上述方法无效,可能是MP3文件本身的帧结构损坏,用ffmpeg重新封装修复(无损音质):

ffmpeg -i "Sean Roldan - Idli Chutney.mp3" -c:a copy "fixed_Sean Roldan - Idli Chutney.mp3"

内容的提问来源于stack exchange,提问作者Aarush Anantha Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:45:21