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 に答える