当前位置:   article > 正文

使用 Python 将 MP4视频 转换为GIF动画_python mp4转gif

python mp4转gif

使用 Python 将 MP4视频 转换为GIF动画

Python 可用于读取常见的 MP4 视频格式并将其转换为 GIF动画。当然,如果你愿意,你可以使用预先构建的软件,但是自己做很有趣(并且是一种很好的学习体验)。

在本教程中,你将学习以下内容:

  • 如何从 MP4 视频中提取帧
  • 将帧转换为 GIF
  • 创建 MP4 到 GIF GUI

让我们开始吧!

运行环境

你需要安装 OpenCV 绑定以读取 MP4 文件并将视频中的每一帧转换为 JPG 文件。安装教程:

python3 -m pip install opencv-python
  • 1

你还需要Pillow从你从视频中提取的 JPG 创建动画 GIF。也可以用pip安装:

python3 -m pip install Pillow
  • 1

要创建 GUI,我这里会用到PySimpleGUI。要安装该库,请使用以下命令:

python3 -m pip install PySimpleGUI
  • 1

如果你使用的是 Anaconda,则包含 opencv-python 和 Pillow。你只需要单独安装 PySimpleGUI。

如何从 MP4 视频中提取帧

从 MP4 视频中提取帧的第一步是找到要转换为 GIF 的视频。

要从上面的视频中提取单个帧,你需要编写一些 Python。创建一个新文件并将其命名为mp4_converter.py。然后输入以下代码:

import cv2


def convert_mp4_to_jpgs(path):
    video_capture = cv2.VideoCapture(path)
    still_reading, image = video_capture.read()
    frame_count = 0
    while still_reading:
        cv2.imwrite(f"output/frame_{
     frame_count:03d}.jpg", image)
        
        # read next image
        still_reading, image = video_capture.read()
        frame_count += 1


if __name__ == "__main__":
    convert_mp4_to_jpgs("flask_demo.mp4")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

此代码采用 MP4 视频文件的路径。然后使用cv2.VideoCapture(path)打开视频。你可以使用此方法通读整个视频并提取每一帧。提取帧时,可以使用cv2.imwrite()将其写出。

当你运行这段代码时,你会发现这个 7 秒的视频产生了 235 帧!

现在准备好拍摄这些帧并将它们转换为动画 GIF。

将帧变成 GIF

该过程的下一步是将使用 OpenCV 从 MP4 文件中提取的帧转换为动画 GIF。

这就是 Pillow 包的用武之地。你可以使用它来接收图像文件夹并创建你的 GIF。打开一个新文件并将其命名为gif_maker.py。然后输入以下代码:

import glob

from PIL import Image


def make_gif(frame_folder):
    images = glob.glob(f"{
     frame_folder}/*.jpg")
    images.sort()
    frames = [Image.open(image) for image in images]
    frame_one = frames[0]
    frame_one.save("flask_demo.gif", format="GIF", append_images=frames,
                   save_all=True, duration=50, loop=0)
    

if __name__ == "__main__":
    make_gif("output"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/272097
推荐阅读
相关标签
  

闽ICP备14008679号