视频转GIF
以下是一个使用 Python 将视频转换为 GIF 的脚本,使用了 imageio
和 opencv-python
库:
python
import cv2
import imageio
import numpy as np
"""
将视频转换为GIF图
参数:
video_path -- 输入视频的路径
gif_path -- 输出GIF的路径
fps -- GIF的帧率,默认为15
width -- 输出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()
# 保存为GIF
imageio.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文件路径
# 转换为GIF
video_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文件可能会比较大,如果原视频很长或者分辨率很高,你可能需要调整这些参数来控制输出文件的大小。