如何批量修改整个目录下MP3等音频文件的元数据?
批量修改指定目录音频元数据Colab脚本
以下是适配批量处理的可直接运行脚本,兼容Colab环境,保留了你原有的处理逻辑,同时优化了路径解析的兼容性:
#@title » 批量修改音频元数据 import os import re # 待处理音频根目录,填写你的目录路径即可 audio_dir = "" #@param {type:"string"} # 要设置的元数据内容,可自行增删修改 metadata_comment = "SAMPLECOMMENT" #@param {type:"string"} metadata_note = "SAMPLENOTE" #@param {type:"string"} # 支持处理的音频后缀,可按需补充格式 support_ext = ["mp3", "flac", "wav", "m4a", "ogg"] for root, dirs, files in os.walk(audio_dir): for file in files: # 过滤非音频格式文件 file_ext = file.split(".")[-1].lower() if file_ext not in support_ext: continue # 拼接完整输入文件路径 input_file_path = os.path.join(root, file) # 提取无后缀的原始文件名 filename_raw = os.path.splitext(file)[0] # 输出文件和原文件同目录,加-OK后缀避免覆盖原文件,可自行调整命名规则 output_file_path = os.path.join(root, f"{filename_raw}-OK.{file_ext}") # 调用ffmpeg无损修改元数据 os.system(f'''ffmpeg -hide_banner -y -i "{input_file_path}" \ -metadata comment="{metadata_comment}" \ -metadata note="{metadata_note}" \ -codec copy "{output_file_path}" ''')
功能说明
- 默认支持遍历所有嵌套子目录的音频文件,如果不需要处理子目录,把
os.walk(audio_dir)替换为os.listdir(audio_dir)并调整路径拼接逻辑即可 - 元数据字段可按需增删,在ffmpeg命令中按照
-metadata 字段名="值"的格式添加即可 -codec copy参数保证音频不重新编码,处理速度快且无音质损失
注意事项
- 操作前建议先备份重要音频文件,避免误操作导致数据损失
- 如果需要直接覆盖原文件,可以将输出路径修改为原文件路径,ffmpeg命令中的
-y参数会自动确认覆盖操作 - 遇到含特殊字符的文件名也可正常处理,脚本已做路径转义适配
内容的提问来源于stack exchange,提问作者aLD3N
相关产品推荐
相关产品推荐

