python 实现将视频转换为gif

每次视频转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多。

你可能感兴趣的:(代码案例)