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

如何在ffmpeg-python中使用含连字符的参数(如svtav1-params)

在ffmpeg-python中设置SVT-AV1的专属参数

基础命令回顾

原生ffmpeg编码AV1(CRF值30)的命令:

ffmpeg -i input.mkv -c:v libsvtav1 -crf 30 output.mkv

对应的ffmpeg-python实现:

(
    ffmpeg
    .input('input.mkv')
    .output('output.mkv', vcodec='libsvtav1', crf=30)
    .run()
)

问题场景:添加fast-decode参数

原生ffmpeg中需扩展命令,加入-svtav1-params fast-decode=1:

ffmpeg -i input.mkv -c:v libsvtav1 -crf 30 -svtav1-params fast-decode=1 output.mkv

但直接在ffmpeg-python的output方法中写svtav1-params='fast-decode=1'会因Python变量名不允许含连字符报错;替换为下划线则会被按字面解析,无法生成有效命令。

解决方法:使用字典传递特殊参数

ffmpeg-python支持通过字典解包的方式传递带特殊字符的参数,将参数名作为字典键,参数值作为对应值,用**语法传入output方法:

(
    ffmpeg
    .input('input.mkv')
    .output(
        'output.mkv',
        vcodec='libsvtav1',
        crf=30,
        **{'svtav1-params': 'fast-decode=1'}
    )
    .run()
)

如果需要同时设置多个svtav1-params参数,可将多个配置用逗号分隔放在同一字符串中:

(
    ffmpeg
    .input('input.mkv')
    .output(
        'output.mkv',
        vcodec='libsvtav1',
        crf=30,
        **{'svtav1-params': 'fast-decode=1,preset=6'}
    )
    .run()
)

这种写法会让ffmpeg-python正确生成对应原生命令的参数格式,实现预期配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:18:27