影片轉換為 gif 動畫
這篇文章會介紹使用 Python 的 moviepy 第三方函式庫,讀取影片並將影片轉換成 gif 動畫。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
安裝 moviepy
輸入下列指令安裝 moviepy,根據個人環境使用 pip 或 pip3。
!pip install moviepy
由於影片轉檔會使用 ffmpeg,因此也要安裝 ffmpeg ( 影片存檔常見錯誤「TypeError: must be real number, not NoneType」往往都是 ffmpeg 沒有安裝導致 ),根據個人環境使用 pip 或 pip3,Anaconda Jupyter 可以使用 conda install。
!pip install ffmpeg
影片轉換為 gif 動畫 ( 基本用法 )
載入 moviepy 讀取影片後,使用 write_gif 方法,就能將影片轉換成 gif 圖檔。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
video = VideoFileClip("oxxostudio.mp4") # 讀取影片
output = video.resize((360, 180)) # 壓縮影片
output = output.subclip(13, 15) # 取出 13~15 秒的片段
output.write_gif("output.gif") # 將這個片段轉換成 gif
print('ok')
影片轉換為 gif 動畫 ( 進階設定 )
透過設定 write_gif 的參數,就能做出更進階的 gif 動畫檔案設定,常用的參數如下:
參數 | 說明 |
---|---|
filename | 動畫檔案名稱。 |
fps | 一秒多少格,預設跟影片相同。 |
loop | 是否重複播放,可設定 True ( 預設 ) 或 False 或數字 ( 重複幾次 )。 |
colors | 色彩數量,預設 256,範圍 2~256。 |
program | 使用哪種編碼器轉換,可設定 ffmpeg ( 預設 ) 或 imageio。 |
下方的程式碼執行後,會產生四張長度為兩秒的 gif 動畫。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
video = VideoFileClip("oxxostudio.mp4")
output = video.resize((360,180))
output = output.subclip(13,15)
output.write_gif("output_fps24.gif", fps=24) # 256 色一秒 24 格
output.write_gif("output_fps8.gif", fps=8) # 256 色一秒 8 格
output.write_gif("output_fps8_c2.gif", fps=8, colors=2) # 2 色一秒 8 格
output.write_gif("output_fps8_c16.gif", fps=8, colors=16) # 16 色一秒 8 格
print('ok')
256 色一秒 24 格
256 色一秒 8 格
2 色一秒 8 格
16 色一秒 8 格
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~