你好,歡迎回來,上一期我們學習了如何使用FFmpeg指令行實作畫中畫的效果!本期,酷炫更新,我們來使用FFmpeg指令行來實作一下畫面多宮格的效果!一說到多宮格,相信我們的第一反應是九宮格,不過呢,由于使用FFmpeg指令行實作九宮格的參數實在太臃腫,我們案例中實作四宮格的效果,也足夠酷炫哦!好了,接下來言歸正傳:
一、指令行參數
ffmpeg -re -i test.mp4 -re -i test.mp4 -re -i test.mp4 -re -i test.mp4 -filter_complex "nullsrc=size=1920x1080 [base];[0:v] setpts=PTS-STARTPTS,scale=960x540 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=960x540 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=960x540 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=960x540 [lowerright];[base][upperleft] overlay=shortest=1[tmp1]; [tmp1][upperright] overlay=shortest=1:x=960 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=540 [tmp3];[tmp3][lowerright] overlay=shortest=1:x=960:y=540" -c:v libx264 out_1080p.mp4
複制
二、參數解釋
-re -i : 在實作多宮格的過程中,如此表示多個輸入,其後寫視訊檔案名即可
-filter_complex: 表示使用複合濾鏡,其後引号中内容為濾鏡的具體參數
nullsrc: 了解為畫布,也就是我們要把所有的視訊畫到該畫布上,參數中指定其大小
[n:v]: 表示第n個視訊的參數, setpts表示pts的設定方式,scale表示該視訊的縮放大小,[upperleft]指出第n個視訊所對應的标簽,此例中n為0,1,2,3
接下來,請仔細看喽:
首先在[base]上,加入[upperleft]的内容,使用overlay濾鏡,濾鏡疊加起始位置為(0,0)(不填預設為原點)後,産生新的标簽tmp1;
基于[tmp1],與[upperright]使用overlay再次疊加,産生标簽[tmp2];
基于[tmp2], 與[lowerleft]使用overlay再次疊加,産生标簽[tmp3];
基于[tmp3], 與[lowerright]使用overlay再次疊加,所有4個标簽建構完成。
-c:v 指出合成之後的視訊使用何種編碼方式
三、實戰
由于參數臃腫,就不一一手敲了,大家看看指令執行的效果:
四、效果
好了,今天這一期就到這裡了,歡迎小夥伴們下期光臨,也别忘了多多練習哦!