MP4视频如何转化为gif

【mp4转gif步骤】

1.准备好mp4文件和我们提供的python脚本:


2.打开python文件,查看修改源码:


3.找到定义视频路径的代码,并将路径修改为你自己的视频路径:


4.找到定义截取mp4帧的时间区间代码,并且修改为你的视频自定义的时间区间(如下表示截取开始时间是1秒,截取结束时间是60秒):


5.找到定义gif尺寸的代码,并且自定义修改尺寸的值(左边的值是宽度,右边的值是高度):


6.找到定义gif文件存储路径的代码,并修改为你自定义的路径和名字:


7.配置好自己的参数后,点击运行python文件稍等片刻即可生成gif文件(注意:当文件时长太长时,或者gif生成太大时,将导致程序崩溃,应合理设置时间区间和设置图片尺寸):

python3 mp4_to_gif.py

8.python文件运行效果:


【完整的代码】

import cv2

import io

from PIL import Image, ImageOps

# 打开视频文件

cap = cv2.VideoCapture('./bad_apple.mp4')


# 获取总帧数和帧率

frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

fps = cap.get(cv2.CAP_PROP_FPS)


# 定义需要截取的时间区间(单位为秒)

start_time = 1

end_time = 60


# 计算对应的帧数区间

start_frame = int(start_time * fps)

end_frame = int(end_time * fps)


# 移动到起始帧

cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame)

# 声明内存缓冲区

buffer = bytearray()

images = []

# 从起始帧开始遍历帧数区间内的每一帧

for i in range(start_frame, end_frame):

    # 读取下一帧

    ret, frame = cap.read()


    # 如果帧读取失败,退出循环

    if not ret:

        break


    # 将帧编码为 JPEG 格式的图像数据,并存储到内存缓冲区中

    _, enc_frame = cv2.imencode(".jpg", frame)

    buffer.extend(enc_frame)

    images.append(Image.open(io.BytesIO(buffer)))


    # 清空缓冲区

    buffer = bytearray()


# 释放视频文件句柄。

cap.release()

cv2.destroyAllWindows()


# 对图片进行变换并保存为 GIF 文件

new_frames = []

for frame in images:

    frame = ImageOps.fit(frame, (256, 128), method=Image.ANTIALIAS)

    new_frames.append(frame)

new_frames[0].save('movie_new.gif', save_all=True, append_images=new_frames[1:], duration=5, loop=0)


【生成GIF文件的效果】

TAG: 树莓派PICO LoRa LF ESP32-S3开发板2.8寸LCD显示屏480x640触摸屏 QMI8658传感器 SD槽 ESP32-S3圆形LCD斑梨教程 MPUUART树莓派5 PCIE转RS485 RS232 UART USB 串口扩展板 ESP32-S3 SIM7670G 4G摄像头开发板LTECat-1/4G/GNSS随身WIFI全球 1.28寸旋钮屏LCD触摸显示屏圆形智能家居开关中控串口屏 数据手册 UART串口TTL转RS485 (C)电气隔离型防雷浪涌多种保护 树莓派CM5计算模块IO底板NANO A扩展底板Compute Module 5 DC-DC降压迷你模块5~36V电压输入5V/3.3V 输出4A USB TO RS485 树莓派Pico 2 1.8寸AMOLED显示触摸屏RP2350开发板可编程手表QSPI 树莓派UGV Rover PT【四驱六轮】开源AI云台机器人小车OpenCV Modbus RTU 树莓派1.3寸IPS LCD扩展板 显示屏 教程 4.3寸串口屏 树莓派5摄像头教程 Core1121 LoRa LR1121 HF LF双频模组 SPI适用于Sub-GHz/2.4GHz 0.49寸OLED显示屏64×32 SSD1315 Arduino 树莓派 ESP32 Pico STM32 树莓派自动对焦摄像头