2012-06-15 29 views
1

在ffmpeg的,您可以創建移動文本:ffmpeg - 移動覆蓋/文本命令如何工作?

ffmpeg -y -t 10 -s qcif -f rawvideo -pix_fmt rgb24 -s 1280x720 -i /dev/zero -g 1 -r 24 -vf drawtext="fontfile=~/fonts/Trebuchet_MS.ttf:text='thing crawls':fontsize=155:fontcolor=red:y=h-20*t" wow.mpg 

因此,這會給我一個黑色的邊框與「東西爬」從下往上慢慢去..

如果我知道這個視頻的長度( 20秒)並且想要例如創建在時間0開始在屏幕的頂部並且到屏幕的底部直到00:00:20的「事物下降」,我該怎麼做?

我也可以創建文本從上到下,但停在屏幕中間的情況嗎?

回答

5

The FFmpeg docs給您必須使用DrawText的過濾器時與工作變量的完整列表,但對於移動文本有幾個特別關注:

「N」
數量輸入幀,從0

開始 'T' 秒錶示
時間戳,NAN如果輸入時間戳是未知

通過這些,您可以設置相對於已經看到多少幀的文本位置。這就是你的例子中y=h-20*t表達式所做的。隨着t的增加,隨着h-20*t的減少,文字會更接近視頻的頂部。

爲了讓你的例子「事情落空」,你需要一個像20*t這樣的術語。由於y的位置從視頻頂部的0開始,因爲t增加,它會向下移動屏幕。

對於停在屏幕中間的文字,你可能會做一些花哨的數學,或者只是使用FFmpeg的rich set of logical functions。像y=t*20*lte(t*20,h/2) + h/2*gt(t*20,h/2)這樣的移動文本,而t*20是小於一半的高度,然後保持y位置h/2一旦t*20大於高度的一半。

+0

非常感謝你! – Stpn