Skip to content
Python:批次影片轉GIF
📆2020-04-10 | 📂Python

偶爾會為了DEMO用途,需要將影片轉換為GIF的形式,便於穿插在文章裡頭,但我不想為了這小小的需求安裝什麼軟體。


而線上服務就是圖個方便打到很多使用者的痛點,但你必須將圖片上傳,這對某些使用者而言可能有疑慮...雖然我見到的線上轉檔服務使用者都是莫名安心地上傳的(?)

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


範例程式:

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

python
#!/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❤️

Last updated: