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

使用Python3+FFmpeg分割MP3并添加多字段元数据失败,求助

解决FFmpeg批量分割MP3并添加元数据的问题

你的命令失效原因很明确:FFmpeg的-metadata参数不能用逗号分隔多个字段,每个元数据都需要单独使用一个-metadata选项。你之前把多个元数据挤在一个选项里,FFmpeg只会识别第一个,后面的都会被忽略。

正确的单文件命令格式

把每个元数据字段拆成独立的-metadata:

ffmpeg -loglevel panic -i 1.mp3 -ss 02:29:11 -to 02:34:43 -c copy -metadata title='My Title' -metadata artist='ME' -metadata date='2023' temp/myfile1.mp3

结合Python+CSV的批量处理方案

既然你用Python和CSV管理分割信息,直接循环读取CSV每行数据,构造正确的FFmpeg命令即可,这样还能避免手动输入的错误。示例代码如下:

import csv
import subprocess

# 假设CSV列名是:start_time,end_time,output_file,title,artist,date
with open('你的文件列表.csv', 'r', encoding='utf-8') as csv_file:
    reader = csv.DictReader(csv_file)
    for item in reader:
        # 构造FFmpeg命令(用列表形式避免特殊字符转义问题)
        cmd = [
            'ffmpeg', '-loglevel', 'panic',
            '-i', '1.mp3',
            '-ss', item['start_time'],
            '-to', item['end_time'],
            '-c', 'copy',
            '-metadata', f"title={item['title']}",
            '-metadata', f"artist={item['artist']}",
            '-metadata', f"date={item['date']}",
            # 如果需要专辑信息,再加一行:
            # '-metadata', f"album={item['album']}",
            item['output_file']
        ]
        # 执行命令
        subprocess.run(cmd, check=True)

注意事项

  • 如果元数据里包含空格、引号等特殊字符,用Python的列表形式传递命令参数(而非拼接字符串),能自动处理转义,避免出错。
  • -c copy是直接复制音频流,速度极快,但如果原文件的编码格式有问题,或者需要转码,可以去掉这个参数,FFmpeg会自动重新编码(但耗时会增加)。

内容的提问来源于stack exchange,提问作者Ghile

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:57:38