ffmpeg濾鏡,濾鏡鏈和濾鏡圖(以實現視頻彈幕爲例)

濾鏡(Filters):在編碼前,對原音視頻使用libavfilter庫中的濾鏡進行處理,FFmpeg內置了許多多媒體過濾器,可以通過多種方式組合它們。

分爲兩種濾鏡:簡單濾鏡和複合濾鏡

簡單濾鏡:

簡單濾鏡就是隻有1個輸入和輸出的濾鏡,使用-vf和-af分別對應視頻和音頻

複合濾鏡:

複合濾鏡就是那些不能簡單的描述爲一個線性處理過程應用到一個流的情況,例如包含多個輸入輸出。

複合濾鏡使用-filter_complex進行設置

濾鏡的使用一般是 濾鏡名=由於冒號(:)隔開各個參數

濾鏡鏈圖(filtergraphs)是連接濾鏡的有向圖,它可以包含循環動作,也可以在多個濾鏡間形成鏈路,每個鏈接都有一個連接到濾鏡的輸入和一個連接到濾鏡的輸出

一個濾鏡鏈(filterchains)包含序列鏈接起來的濾鏡,這個序列由“,"分隔各個濾鏡

一個濾鏡鏈圖(filtergraphs)包含序列濾鏡鏈,這個序列由“;”分隔各個濾鏡鏈

同一路的濾鏡間用逗號(,)進行分割,不同路的濾鏡間用分號進行分割(;)

例如用在視頻中同時加入多個文字和多個圖片,使用到多個濾鏡就需要使用濾鏡鏈,而指定輸入輸出標籤就形成濾鏡鏈圖

ffmpeg -i video.mp4 -i logo.png -i logo1.png -filter_complex  "[1:v]scale=30:30[img1];[2:v]scale=30:30[img2];[0:v][img1]overlay=(main_w-overlay_w)/2+t*100:(main_h-overlay_h)/2[bkg];[bkg][img2]overlay=0:0",drawtext="fontfile=fonts/Medium.ttf:text='hello':fontcolor=white:fontsize=50:x='if(between(t,2,10),150,NAN)':y=120" -y output.mp4

解析:

1.[0:v]指定流 ,0表示第0個文件,v表示操作對象裏的視頻信息。

2.[img1]是對scale濾鏡的處理結果命名標記標籤,[0:v][img1]表示將scale縮略處理後的圖片覆蓋到視頻上,類似這個包含鏈接輸入輸出標記如[img1]的就組成濾鏡鏈圖filtergraphs

3.由於使用overlay添加圖片水印,使用drawtext添加文字水印,這個兩個濾鏡間使用逗號,分割開來,組成一個濾鏡鏈

4.overlay中t*100,表示從x軸以100的速度移動

5.x='if(between(t,2,10),150,NAN)’表示在2,10秒的區間顯示字幕。if(條件,條件爲true時的值,條件爲false時的值)

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章