如何将变量放入Bash中的字符串

时间:2013-02-12 22:50:59

标签: bash variables expression

我正在编写一个Bash脚本,我正试图找到一种让FFmpeg识别-force_key_frames选项中的全局变量的方法。 -force_key_frames选项可以将正则表达式作为参数,允许每5秒强制一个关键帧等功能:

-force_key_frames 'expr:gte(t,n_forced*5)'

这适用于每5秒强制一个关键帧,但我不知道如何每隔x秒强制一个关键帧,x是来自用户得到的其余脚本的输入变量。我正在尝试的确切的FFmpeg命令是:

ffmpeg -i "video.mp4" -vcodec: libx264 -b:v 500k \
-force_key_frames 'expr:gte(t,n_forced*${SEG_TIME})' -s:v 640x480 \
-r 29.97 -pix_fmt yuv420p -map 0 -f segment -segment_time ${SEG_TIME} \
-reset_timestamps 1 -y "output%01d.mp4"

脚本将变量$SEG_TIME设置为5,但-force_key_frames选项中的正则表达式似乎不喜欢$SEG_TIME变量。

1 个答案:

答案 0 :(得分:5)

这部分

'expr:gte(t,n_forced*${SEG_TIME})'

你的单引号导致字符串${SEG_TIME}按字面顺序传递而不是解释为变量,试试这个

"expr:gte(t,n_forced*${SEG_TIME})"