2016年12月10日 星期六

FFmpeg : 影片剪接與加馬賽克

2016年12月10日 星期六
影片的剪輯不一定要使用圖形界面來操作的,如果只是想進行簡單的剪接而已,利用 ffmpeg 這個自由軟體,下指令即可進行剪接,甚至加上特效。

以底下的某化妝品廣告影片為例:



分析原廣告片,在 00:02:28.500 和 00:02:46.001 以後各有 1.5 秒 和 2 秒長的時間會出現商品的名稱,另外在 00:03:13 以後會有全版的廣告。片尾的廣告只要截掉不取即可,不過中間會有兩段要為商品名稱加上馬賽克。

本篇中會使用到兩個工具,都可以在網路中找到:

影片下載

在 YouTube 中的影片,可以利用 youtube-dl 下載。假設我們將下載回來的 FullHD 的影片儲存為 source.mp4。

切割影片

利用 ffmpeg 將原始影片(本例中的 source.mp4)切割為五分段,並輸出為 s1.mp4、s1.mp4、s1.mp4、s1.mp4、s1.mp4,五個影片檔。指令如下:

ffmpeg -i source.mp4 -ss 00:00:00.00 -t 00:02:28.500 -y -c copy s1.mp4 
ffmpeg -i source.mp4 -ss 00:02:28.501 -t 00:00:01.500  -y -c copy s2.mp4 
ffmpeg -i source.mp4 -ss 00:02:30.001 -t 00:00:16.000  -y -c copy s3.mp4 
ffmpeg -i source.mp4 -ss 00:02:46.001 -t 00:00:02.00 -y -c copy s4.mp4 
ffmpeg -i source.mp4 -ss 00:02:48.001 -t 00:00:25.00 -y -c copy s5.mp4

上述指令中,「-ss」設定了分段影片的開始時間,而「-t」設定了分段影片的長度。

加馬賽克

我們可以利用 ffmpeg 的濾鏡功能來為 s2.mp4 和 s4.mp4 這兩段有 mark 的地方加上馬賽克。

下載回來的影片,解析度是 1920 x 1080 ,而

  •  s2.mp4 中需要加馬賽克的大小假設為 960x540,放置的座標為 (380,270)
  •  s4.mp4 中需要加馬賽克的大小假設為 1160x540,放置的座標為 (380,270)

最後再用原來的檔名覆蓋儲存即可。執行底下的兩行指令:

ffmpeg -i s2.mp4  -filter_complex  "[0:v]crop=960:540:380:270,boxblur=10[fg];  [0:v][fg]overlay=380:270[v]" -map "[v]" -map 0:a -c:a copy -movflags +faststart  -y s2.mp4 
ffmpeg -i s4.mp4  -filter_complex  "[0:v]crop=1160:540:380:270,boxblur=10[fg];  [0:v][fg]overlay=380:270[v]" -map "[v]" -map 0:a -c:a copy -movflags +faststart  -y s4.mp4
上面的濾鏡參數:

  • [0:v] : 指出是針對第一個影片設定。
  • crop=960:540:380:270 在座標 (380, 27) 處取 960x540 大的畫面
  • boxblur : 馬賽克

連接影片

分段影片都處理好了,最後我們利用 ffmpeg 將 s1.mp4、s2.mp4、s3.mp4、s4.mp4、s5.mp4 五個檔案連接起來,並儲存為 new_movie.mp4,執行底下的這行指令:

ffmpeg -i s.mp4 -i out2.mp4  -i out3.mp4  -i out4.mp4  -i out5.mp4 -filter_complex concat=n=5:v=1:a=1 -y new_movie.mp4

concat 參數的部份:

  • n=5 : 有 5 個影片
  • v=1 : 有影片
  • a=1 : 有聲音


透過前面的操作以後,最後輸出的影片裡,看不到商品的名稱了。ffmpeg 實在好強,有空再來研究一下別的玩法。

後記

學而後知不足,2017年五月底再看這篇文章以後,才了解在整理這篇時有多麼土。其實 FFmpeg 如果用 version 2.0 以後的版本,有更簡單的方法。強烈的建議如果想幫影片加上多個不同的馬賽克,可以參考底下這篇中的方法:



相關文章



沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket