2013-02-12 144 views
0

我正在編寫一個Bash腳本,並且我正試圖找出一種方法來讓FFmpeg識別-force_key_frames選項中的全局變量。該-force_key_frames選項可以採取一個正則表達式作爲參數,允許功能,如強制關鍵幀每5秒:FFmpeg force_key_frames表達式變量

-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

這部分

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

你的單引號引起字符串${SEG_TIME}傳遞字面上,而不是解釋爲一個變量,試試這個

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

這工作。謝謝! – user1704620 2013-02-13 18:33:12