私は 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
です。