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

Python中使用subprocess调用ffmpeg命令无报错但无输出问题咨询

ffmpeg Python调用无输出文件问题成因

核心问题是你对subprocess的命令参数拆分规则理解错误,导致ffmpeg收到非法参数后异常退出,未生成输出文件:

  • ffmpeg的-vf(视频滤镜)参数后面必须跟完整的滤镜表达式字符串,多个滤镜用逗号分隔,属于同一个命令参数。原始命令中scale=1280:-2,setsar=1:1是完整的一个参数块,不能拆分为scale=、1280:-2、setsar=、1:1四个独立参数。
  • 错误拆分参数后,ffmpeg无法识别错乱的滤镜语法,会直接报错退出,但因为你没有捕获ffmpeg的标准错误输出,所以看不到报错信息,误以为程序运行无异常。

正确代码示例

import subprocess

# 完整滤镜字符串作为单个参数传给-vf即可
subprocess.call([
    'ffmpeg.exe',
    '-y',
    '-i', pname1,
    '-vf', 'scale=1280:-2,setsar=1:1',
    '-c:v', 'libx264',
    '-c:a', 'copy',
    pname2
])

调试小技巧

如果后续调用ffmpeg出现异常,可以捕获输出查看具体报错:

import subprocess

res = subprocess.run(
    [
        'ffmpeg.exe',
        '-y',
        '-i', pname1,
        '-vf', 'scale=1280:-2,setsar=1:1',
        '-c:v', 'libx264',
        '-c:a', 'copy',
        pname2
    ],
    capture_output=True,
    text=True
)
# 打印ffmpeg错误日志定位问题
print(res.stderr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:09:03