0

我正在编写一个 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变量。

4

1 回答 1

5

这部分

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

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

"expr:gte(t,n_forced*${SEG_TIME})"
于 2013-02-13T01:26:53.183 回答