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

在Bash中通过变量传递FFmpeg多选项报错,如何解决?

解决FFmpeg通过变量传递多选项的报错问题

你的问题出在shell对参数的解析逻辑上:当你用"$FFMPEG_ARGS"包裹变量时,shell会把整个字符串当作单个完整参数传给ffmpeg,导致ffmpeg把-nostdin -hide_banner -nostats -loglevel error识别成一个不存在的长选项,自然报错。

推荐两种可靠的解决方法:

方法1:使用Bash数组(最安全)

用数组存储每个独立的选项,能完美处理带特殊字符的参数:

# 用数组定义多个选项,每个元素是一个独立参数
FFMPEG_ARGS=(-nostdin -hide_banner -nostats -loglevel error)
# 用"${数组名[@]}"展开,每个元素会被当作单独参数传递
ffmpeg "${FFMPEG_ARGS[@]}" -y -i "$SOURCE" "$OUTPUT"

方法2:去掉变量的双引号(仅适用于无特殊字符的场景)

如果你的选项里没有空格、引号等特殊字符,可以直接去掉变量的双引号,让shell自动拆分参数:

FFMPEG_ARGS="-nostdin -hide_banner -nostats -loglevel error"
# 不包裹双引号,shell会按空格拆分参数
ffmpeg $FFMPEG_ARGS -y -i "$SOURCE" "$OUTPUT"

⚠️ 注意:这种方式有局限性,如果参数包含空格或特殊字符(比如带空格的文件名),会导致参数拆分错误,因此优先推荐数组方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:53:10