每次视频转gif找网站在线转的,经常忘记地址,有的网站要登陆,有的网站有水印,有的网站还要开会员。不想麻烦,干脆自己用程序写一个。
1、先安装imageio
:
pip3 install imageio -i https://pypi.tuna.tsinghua.edu.cn/simple
2、视频转gif:
(注意,清晰度高的视频转换时间比较久,动图也比较大,并不是程序死机了,缩短时间和动图大小看下面)
import imageio
import os
import cv2.cv2 as cv
video_path = "E:/jcy/1.MP4"
save_path = "E:/jcy/1.gif"
cap = cv.VideoCapture(video_path)
gif = []
while cap.isOpened():
ret,frame = cap.read()
if ret == False:
break
gif.append(frame)
imageio.mimsave(save_path, gif, 'GIF', duration=0.1)
3、对于分辨率比较高的视频
对于分辨率比较高,时间比较长的视频转gif,程序会运行很久,甚至卡死。为了解决这个问题,两个方案,一个是缩小图片,一个是抽帧。
import imageio
import os
import cv2.cv2 as cv
import numpy as np
video_path = "E:/jcy/1.MP4" #视频地址
save_path = "E:/jcy/1.gif" #gif保存地址
cap = cv.VideoCapture(video_path)
gif = []
count = 1 #抽帧标志
while cap.isOpened():
ret,frame = cap.read()
if ret == False:
break
img = cv.resize(frame,(int(frame.shape[1]/4),int(frame.shape[0]/4))) #尺寸缩小为原图的1/4
if count%7 == 0: #每7帧抽1帧
gif.append(img)
count+=1
imageio.mimsave(save_path, gif, 'GIF', duration=0.1)
4、运行结果:
使用上面这段代码通过缩图和抽帧,把原本转换下来要400多M的gif缩小到了4M多。