2017-09-26 156 views
1

我想淡入文本進出(文本具有一個背景),在那一刻,我有什麼是這個命令:FFMPEG - 衰落的文字與背景

1.混合命令

ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles];[subtitles][0:v]blend=all_expr='A*(if(between(T,1,2),(T-1),0))+B*(1-(if(between(T,1,2),(T-1),0)))'[out]" -map '[out]' -map 0:a output.mp4 

上面的命令成功地消失在DrawText的(又名字幕在這個過濾器),但我還沒有設法讓它淡出出來出於某種原因,因爲改變它的數值不太有我期望的結果。

我也試了一個命令,沒有那麼複雜,但沒有其他原因工作過:

2.淡出命令

ffmpeg -y -i input.mp4 -filter_complex "drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2[subtitles]; [subtitles]fade=t=in:st=2:d=1,fade=t=out:st=3:d=1[out]" -map '[out]' -map 0:a output.mp4 

這第二個命令進出變淡,但適用於整個視頻而不是單獨的字幕部分。

任何方式有人可以給我這個手?

回答

1

的快速和骯髒的方法做到這一點是基本視頻分成兩個,畫上一個拷貝文本,添加alpha通道,應用淡入淡出到α,結果疊加到另一副本。

例如

ffmpeg -y -i input.mp4 -filter_complex "[0]split[base][text];[text]drawtext=fontfile=HelveticaNeue.ttf:text='Testing': fontcolor=white:\ 
fontsize=40: box=1: [email protected]:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2,format=yuva444p,fade=t=in:st=2:d=1:alpha=1,fade=t=out:st=3:d=1:alpha=1[subtitles]; \ 
[base][subtitles]overlay" output.mp4 
+0

非常有趣!我認爲這將是非常慢又在哪裏,我們只是淡出字幕通道的解決方案,但它是完全相反,你的解決方案只需花費不到一半,然後我的「1混合命令」,我可能會用這個去除非一些更好的選擇出現,非常感謝您的意見! –

+1

'blend'單獨爲每個像素尋址,以便更多mem I/O操作。 – Mulvya

+0

是有道理:)感謝輸入伴侶! –