如何移除eyeD3工具遗漏的顽固内嵌专辑封面(嵌入式图片)?
如何移除eyeD3工具遗漏的顽固内嵌专辑封面(嵌入式图片)?
我之前也碰到过eyeD3搞不定的顽固专辑封面,大概率是这些封面的嵌入格式比较特殊,或者和某些ID3标签版本兼容有问题。下面几个方法亲测有效,你可以根据需求选:
用ffmpeg批量清理(最通用)
ffmpeg对媒体元数据的处理兼容性很强,不管是啥奇怪的嵌入方式基本都能搞定。如果要处理所有子文件夹里的MP3,直接用find命令配合ffmpeg:find /你的音乐根目录 -type f -name "*.mp3" -exec ffmpeg -i {} -map 0 -map -0:v -c copy {}_temp.mp3 \; && find /你的音乐根目录 -type f -name "*_temp.mp3" -exec rename 's/_temp//' {} \;原理是把原文件里的视频流(也就是内嵌图片)排除掉,复制其他所有流(音频+保留的标签)到临时文件,最后替换原文件。建议先拿几个文件测试,或者提前备份,避免意外。如果只处理当前文件夹,把路径换成
.就行。用id3v2工具精准删除封面
这是专门针对ID3标签的工具,比eyeD3有时候更细致。如果只想删除封面保留其他标签,用这个命令:id3v2 --delete-frame APIC /单个文件路径.mp3批量处理所有文件夹的话,同样搭配find:
find /你的音乐根目录 -type f -name "*.mp3" -exec id3v2 --delete-frame APIC {} \;如果连所有ID3标签都想清掉(封面肯定也没了),可以用
id3v2 --delete-all {},不过这个要谨慎用。用Python脚本手动清理(终极方案)
如果上面的工具都搞不定,那大概率是标签结构比较特殊,可以用mutagen库写个简单脚本精准清理。先装mutagen:pip install mutagen,然后保存下面的脚本:from mutagen.mp3 import MP3 import os def remove_album_art(root_dir): for dirpath, _, filenames in os.walk(root_dir): for filename in filenames: if filename.lower().endswith('.mp3'): filepath = os.path.join(dirpath, filename) try: audio = MP3(filepath) # 遍历所有标签,删掉APIC类型的帧(也就是专辑封面) for key in list(audio.tags.keys()): if key.startswith('APIC'): del audio.tags[key] audio.save() print(f"已处理: {filepath}") except Exception as e: print(f"处理失败 {filepath}: {str(e)}") if __name__ == "__main__": import sys if len(sys.argv) != 2: print("使用方法: python remove_album_art.py /你的音乐根目录") else: remove_album_art(sys.argv[1])运行的时候直接传音乐根目录路径就行,它会遍历所有子文件夹的MP3,只删封面不碰其他标签。
备注:内容来源于stack exchange,提问作者Gene Tyle
相关产品推荐
相关产品推荐

