本部落格已搬遷, 3秒後跳轉...

Python:批次影片轉GIF | Laplace's Lab

Python:批次影片轉GIF

偶爾會為了DEMO用途,需要將影片轉換為GIF的形式,便於穿插在文章裡頭,但我不想為了這小小的需求安裝什麼軟體。而線上服務就是圖個方便打到很多使用者的痛點,但你必須將圖片上傳,這對某些使用者而言可能有疑慮…雖然我見到的線上轉檔服務使用者都是莫名安心地上傳的(?)

Python是非常美好的程式語言,自己寫段程式碼來處理就行了😎  我們只需要先在電腦安裝FFmpeg,然後引入moviepy這個套件就行了,作者zulko在他的個人網站有詳細的教學


範例程式:

設置參數可更換影片輸入格式、是否加入浮水印以及生成的GIF和浮水印的縮放倍率。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python3
from glob import glob
import moviepy.editor as mp


# setting
filetype = '.mov'
watermark = './devilcat.png'
scale_gif = 0.3
scale_mark = 0.3

videos = glob('./*' + filetype)
videos.sort()
for video in videos:
output = video.replace(filetype, '.gif')
with mp.VideoFileClip(video).resize(scale_gif) as clip:
if watermark == '': # no watermark
clip.write_gif(output, fps=5)
else:
mark_image = (mp.ImageClip(watermark)
.resize(scale_mark)
.set_duration(clip.duration)
.set_pos(("left", "top")))

# add watermark to video
mark_video = mp.CompositeVideoClip([clip, mark_image])
mark_video.write_gif(output, fps=5)

*關於resize的錯誤參考:stackoverflow — Moviepy does not recognize resize function


我使用YT頻道哈哈台訪問浪漫Duke經典片段當範例,實際執行將影片轉換為GIF動圖並加上浮水印。

  • 首先來畫一個浮水印…惡魔貓男!你今晚的惡夢!(激動 ⬇︎

  • 接著準備幾個要轉成GIF的片段,開始轉換⬇︎

  • 轉檔結果,可以看到GIF左上角出現剛剛畫的浮水印🤣  ⬇︎

世界要有愛! 雞肉飯❤️
好看! 浪漫Duke❤️
0%