給視頻加上Mask後,旋轉,併疊加在另一個視頻上
方案一:
有黑底
ffmpeg -loop 1 -i 圓形.png -i maskBase.mp4 -i a3.mp4 -filter_complex [0:v]alphaextract[vMaskAlpha];[1:v][vMaskAlpha]alphamerge[vTop];[vTop]rotate=PI*2/10*t[vRotate];[2:v][vRotate]overlay=(W-w)/2:(H-h)/2 -y maskRotateOverlay.mp4
方案二:分成兩步
1.視頻加上Mask以後,並且旋轉
mask和底部視頻尺寸要一致,時長也要一致,所以加上了-loop 1
ffmpeg -loop 1 -i 圓形.png -i maskBase.mp4 -filter_complex [0:v]alphaextract[vMaskAlpha];[1:v][vMaskAlpha]alphamerge[vTop];[vTop]rotate=PI*2/10*t[vRotate];color=c=black:s=648x648[vBg];[vBg][vRotate]overlay -t 10 -y maskRotate.mp4
2.去掉黑底,並且overlay
ffmpeg -i a3.mp4 -i maskRotate.mp4 -filter_complex [1]split[m][a];[a]geq='if(gt(lum(X,Y),50),255,0)',hue=s=0[al];[m][al]alphamerge[ovr];[0][ovr]overlay=(W-w)/2:(H-h)/2 -y maskRotateOverlay2.mp4
不夠完美,黑色去掉的有點多了,有好的方案在改吧
方案三:最終方案
在方案一的基礎上給rotate加一個參數
c=none
ffmpeg -loop 1 -i 圓形.png -i maskBase.mp4 -i a3.mp4 -filter_complex [0:v]alphaextract[vMaskAlpha];[1:v][vMaskAlpha]alphamerge[vTop];[vTop]rotate=PI*2/10*t:c=none[vRotate];[2:v][vRotate]overlay=(W-w)/2:(H-h)/2 -y maskRotateOverlay33.mp4
方案四:如果頂部是一個方形的視頻
可以看到就像撲克牌一樣,一幀幀的鋪開,所以要用圓形來旋轉
即使加上eof_action=pass,也只是最後播放完成後,頂層視頻幀一起消失
ffmpeg -i maskBase.mp4 -i a3.mp4 -filter_complex [0:v]format=bgra,rotate='PI*2/10*t:ow=hypot(iw,ih):oh=ow:c=none'[vRotate];[1:v][vRotate]overlay=(W-w)/2:(H-h)/2 -t 3 -y maskRotateOverlay55.mp4