You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用python-ffmpeg批量编辑视频元数据时出现「Error splitting the argument list: Option not found」错误求助

python-ffmpeg批量编辑视频元数据时出现「Error splitting the argument list: Option not found」错误求助

嗨,我看了你的代码和报错里的FFmpeg参数列表,马上就找到问题啦!

问题根源

你在调用output()时直接用了title=title这个参数,这会让python-ffmpeg生成-title "Sword Art Online (2012).S01E01"这样的FFmpeg命令参数,但FFmpeg本身并没有-title这个独立选项,设置视频标题元数据的正确方式是用-metadata title="你的标题"格式,这就是为什么你会收到「Option not found」的报错。

修复方案

把你代码里的FFmpeg输出配置部分改成下面这样:

ffmpeg = FFmpeg(executable=r'c:\FFmpeg\bin\ffmpeg.exe').option("y").input(source).output(
    destination,
    codec="copy",
    metadata=f"title={title}"
)

或者用更清晰的字典形式传递元数据(这个库支持两种写法):

ffmpeg = FFmpeg(executable=r'c:\FFmpeg\bin\ffmpeg.exe').option("y").input(source).output(
    destination,
    codec="copy",
    metadata={"title": title}
)

这样修改后,python-ffmpeg会生成FFmpeg能识别的-metadata title="xxx"参数,就不会再报参数错误了。

额外的优化小建议

  1. 路径处理更安全:别用字符串拼接路径了,用Path对象来处理,避免手动处理斜杠的麻烦,比如:
    folder = Path(r'D:\ServerTransfer\Update Server') / video / name / f'S{season}'
    source = folder / file_name
    destination = folder / f"{name}.S{season}E{episode:02d}{extension}"
    
  2. 简化episode补零逻辑:不用判断episode是否小于100,直接用格式化字符串f"{episode:02d}",自动生成两位数字(1→01,10→10,100→100),代码更简洁。
  3. 精准筛选视频文件:用folder.glob(f"*{extension}")直接遍历目标格式的文件,省去循环里的endswith判断:
    for file_path in folder.glob(f"*{extension}"):
        source = file_path
        # 后续逻辑...
    

备注:内容来源于stack exchange,提问作者maric193

火山引擎 最新活动