視頻轉GIF
以下是一個使用 Python 將視頻轉換為 GIF 的腳本,使用了 imageio
和 opencv-python
庫:
import cv2
import imageio
import numpy as np
"""將視頻轉換為GIF圖參數:video_path -- 輸入視頻的路徑gif_path -- 輸出GIF的路徑fps -- GIF的幀率,默認為15width -- 輸出GIF的寬度,默認為720
"""
def video_to_gif(video_path, gif_path, fps=10, width=128):# 打開視頻文件cap = cv2.VideoCapture(video_path)if not cap.isOpened():print(f"無法打開視頻文件:{video_path}")return# 獲取視頻的原始寬度和高度original_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))original_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))# 計算新的高度以保持高寬比height = int(original_height * width / original_width)# 創建一個列表來存儲GIF幀frames = []while True:ret, frame = cap.read()if not ret:break# 調整幀大小resized_frame = cv2.resize(frame, (width, height))# 轉換為RGB格式(OpenCV使用BGR)rgb_frame = cv2.cvtColor(resized_frame, cv2.COLOR_BGR2RGB)# 添加到幀列表frames.append(rgb_frame)# 釋放視頻資源cap.release()# 保存為GIFimageio.mimsave(gif_path, frames, 'GIF', fps=fps)print"G(fIF已成功保存到:{gif_path}")if __name__ == "__main__":# 視頻路徑和輸出GIF路徑video_path = 'input.mp4' # 輸入你的視頻文件路徑gif_path = 'output.gif' # 輸出的GIF文件路徑# 轉換為GIFvideo_to_gif(video_path, gif_path)
這個腳本的工作流程如下:
- 使用
cv2.VideoCapture
打開視頻文件 - 獲取視頻的原始尺寸,并根據寬度目標計算新的高度以保持寬高比
- 循環讀取視頻的每一幀
- 對每一幀進行調整大小和顏色格式轉換
- 將所有處理后的幀存儲在一個列表中
- 使用
imageio.mimsave
將幀列表保存為GIF文件
使用方法:
-
安裝必要的庫:
pip install opencv-python imageio numpy
-
修改代碼中的
video_path
和gif
_path 變量為你自己的輸入和輸出文件路徑
你可以調整以下參數來自定義輸出:
fps
: 設置GIF的幀率(默認為15)width
: 設置輸出GIF的寬度(默認為128)
你還可以通過修改frames.append()
前的代碼來添加額外的處理,比如添加文字、調整對比度等
注意:轉換后的GIF文件可能會比較大,如果原視頻很長或者分辨率很高,你可能需要調整這些參數來控制輸出文件的大小。