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