ffmpeg第五篇:讓水印圖片旋轉起來

這篇把上次挖的坑填上
ffmpeg正式篇的上一篇(傳送門)說了,這一篇要讓水印旋轉起來,但是後面有事情一直沒有時間搞,今天,它來了............

如果想實現旋轉的功能,需要使用ffmpeg過濾器的鏈式功能,即:先把作爲水印的圖片旋轉,再覆蓋到視頻上

第一步,實現旋轉功能,具體的命令如下:
ffmpeg -i buck.mp4 -i s1.jpg -lavfi "[1:v]rotate=PI/6:c=none[out];[0:v][out]overlay=10:10" out.mp4 -y
而實際出來的效果如下:
1.jpg
可以看到,旋轉功能已經實現了,但是卻有兩個問題:

  • 由於圖片是長方形的,旋轉後圖片丟失了部分
  • 圖片移走的部分是綠色的,完全無法直視

第二步:解決上面的兩個問題,具體命令如下:
ffmpeg -i buck.mp4 -i s1.jpg -lavfi "[1:v]format=rgba,rotate='PI/6:c=0x00000000:ow=hypot(iw,ih):oh=ow'[out];[0:v][out]overlay=10:10" out.mp4 -y
3.jpg
思路是:

  • 調整水印寬高,根據勾股定律計算圖片對角長度(hypot),將這個值設置爲水印的寬高,這樣,圖片無論如何旋轉,都不會超過設定的寬高,也就不會出現圖片部分丟失的情況了
  • 將圖片顯示的像素格式轉換爲rgba格式,如果做過前端的小夥伴會很熟悉的,最後的a表示透明度,如此一來,c=0x00000000的作用就是將圖片旋轉後的背景變爲白色且完全透明,這樣就不會遮擋視頻了

第三步:讓旋轉停不下來huaji,具體命令如下:
ffmpeg -i buck.mp4 -loop 1 -i s1.jpg -lavfi "[1:v]format=rgba,rotate='PI/2*t:c=0x00000000:ow=hypot(iw,ih):oh=ow'[out];[0:v][out]overlay=10:10" -shortest out.mp4 -y
4.jpg
細心的小夥伴會發現,這次水印圖片前面添加了-loop 1參數,具體爲什麼要添加相信看過第四篇(傳送門)的小夥伴想必已經知道了,這裏再重複一遍:因爲水印圖片默認在播放一次後就停下來,保留最後一幀,所以要讓水印圖片保持循環纔行

小作業:讓水印位置也隨着時間動起來?huaji

有問題請留言溝通,歡迎轉載,轉載請註明出處

歡迎點擊個人博客地址:暖寶寶官方認證鏟屎官

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