FFmpeg命令行語法之-filter_complex (Android環(huán)境)

廢話少說,先舉個例子

ffmpeg -i input.mp4 -i image1.png -i image2.png -filter_complex  [1:v]scale=100:100[img1];[2:v]scale=1280:720[img2];[0:v][img1]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[bkg];[bkg][img2]overlay=0:0 -y output.mp4

這個例子其實在android端使用ffmpeg給視頻添加圖片水印里已經(jīng)說過了。
這是一個給視頻打上圖片水印的命令。
然而,他打的不是一個普通的水印,而是兩個。
命令看上去很簡潔。然而(又是然而),正因為他這么簡潔,所以一開始上來未免搞不清他實際是什么意思。

來,我們把他拆開,其實他由以下部分組成:

//1.起始
ffmpeg
//2.輸入
-i input.mp4//這個是原始文件
-i image1.png//第一個水印圖片
-i image2.png//第二個水印圖片
//3.濾鏡
-filter_complex  [1:v]scale=100:100[img1];[2:v]scale=1280:720[img2];[0:v][img1]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[bkg];[bkg][img2]overlay=0:0
//4.輸出
-y output.mp4//輸出文件

1、2、4部分的含義一目了然。3里頭的scale和overlay也是字面的意思,不難理解。然而,-filter_complex濾鏡的參數(shù)結(jié)構(gòu)就不是那么好理解了,比如說那一坨[]里頭的東西是什么鬼?

來,一個個解釋。
[1:v]這個里頭兩個參數(shù),1表示的是操作對象的編號。在本例中0就是原始視頻文件input.mp4,1就是image1.png,2就是image2.png,3就是output.mp4。而另一個參數(shù)v表示操作對象里的視頻信息。
[img1]是這個操作過濾器的名字。(當(dāng)然名字可以隨便起)
所以這頭一句[1:v]scale=100:100[img1]的意思就是對圖片imagei.png進(jìn)行調(diào)節(jié)尺寸的操作,并將這個操作的結(jié)果命名為img1。后面的[2:v]和[img2]也是一個意思。
我們繼續(xù),overlay前面[0:v][img1]湊一起是什么意思呢。0自然就是指的原始視頻,這句的意思就是將[img1]疊加到0對象的視頻上。本例中就是把image1.png疊加到input.mp4上。這里需要注意的就是順序:后一個對象疊加到前一個上,后一個對象在上層。如果寫成[img1][0:v],那相對本例其實就是把視頻疊加到圖片imge1.png上。這樣的話一般來說由于視頻通常是全屏,等于用視頻覆蓋了圖片,水印完全看不到了。
好,我們又把這個操作的結(jié)果命名為[bkg],那么接下來[bkg][img2]的意思就很明了了。就是把image2.png再疊加上去,image2.png是在最上層的,如果位置重合的話,他會遮蓋 image1.png的水印。
于是,事就這樣成了。


加個餐

1.水印的移動:
這里需要用到時間參數(shù)。
比如:overlay=0+t*20:0
這里在x坐標(biāo)上加上了+t*10,于是水印就會慢慢向右邊移動。

2.特定時間顯示水?。?br> 這次不僅要用到時間參數(shù),還要用上條件語句。

overlay=x='if(gte(t,2),10,NAN)':(main_h-overlay_h)/2

if條件語句的基本結(jié)構(gòu)就是

if(條件,條件為true時的值,條件為false時的值)

再來看看計算表達(dá)式。
這里用到了表達(dá)式gte(x,y)。如果x大于等于y則表達(dá)式的值為1,反之為0。
所以if(gte(t,2),10,NAN)的意思就是,當(dāng)時間大于等于2秒時,水印x位置為10,反之不顯示水印。(或者你也可以用lte來判斷“小于或等于”)
要了解所有表達(dá)式的話,可以去啃一下ffmpeg官方文檔的Expression Evaluation部分。


參考:
ffmpeg 基本用法大全
ffmpeg Documentation

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 如此強大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集、視頻格式轉(zhuǎn)化、視頻截圖、視頻添加水印、視頻切片、視頻錄制、視頻推流...
    騷之哈塞給閱讀 25,950評論 6 39
  • 前言 如此強大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集、視頻格式轉(zhuǎn)化、視頻截圖、視頻添加水印、視頻切片、視頻錄制、視頻推流...
    sillen閱讀 5,475評論 2 45
  • 前言 如此強大的FFmpeg,能夠?qū)崿F(xiàn)視頻采集、視頻格式轉(zhuǎn)化、視頻截圖、視頻添加水印、視頻切片、視頻錄制、視頻推流...
    RichyLeo閱讀 17,663評論 1 22
  • 正在讀《蔡康永的說話之道》,其實很早就想學(xué)習(xí)這本書,可一拖再拖,到今天才拆開外面那層塑料包裝皮,拆書和拆快遞一樣,...
    若水仰兮閱讀 517評論 2 6
  • ?說明:本文版權(quán)歸屬逍遙魏紫,若有轉(zhuǎn)載,請注明出處。
    逍遙魏紫閱讀 301評論 0 0

友情鏈接更多精彩內(nèi)容