SoFunction
Updated on 2025-04-14

Three ways to convert MP4 videos to GIF images in Python

introduction

In the digital age, converting videos to GIF images has become a popular way to create content. GIF (Graphics Interchange Format) files are popular for their unique animation effects and smaller file sizes. In Python, there are multiple libraries that can help you convert MP4 videos to GIF images. This article will introduce three commonly used methods: using the moviepy library, the imageio library, and combining opencv and PIL libraries.

Method 1: Use the moviepy library

moviepyIt is a powerful video editing library that supports a variety of video and audio operations. It provides a simple and intuitive API, making video processing a breeze.

Step 1: InstallmoviepyLibrary

First, you need to install it through pipmoviepylibrary. Open your command line tool and enter the following command:

pip install moviepy

Step 2: Write the conversion code

Next, use the following Python code to convert MP4 videos to GIFs:

from  import VideoFileClip

# Enter the MP4 file pathinput_video_path = 'input_video.mp4'

# Output GIF file pathoutput_gif_path = 'output_video.gif'

# Load video fileclip = VideoFileClip(input_video_path)

# Set the duration (in seconds), for example, set to 5 secondsduration = 5

# Crop the video to get the required durationclip = (0, duration)

# Set the frame rate of the GIF (the number of frames displayed per second), for example, set to 10 frames/secondfps = 10

# Convert video to GIFclip.write_gif(output_gif_path, fps=fps)

# Free up resources()

print(f"GIF has been created at {output_gif_path}")

Notes:

  • Converting videos with longer time to GIFs may result in very large output files, so it is recommended to convert only a small part of the video.
  • GIF files do not support high quality and color depth like MP4, so converted GIFs may have some quality loss.
  • moviepy relies on underlying video processing libraries such as FFmpeg to ensure that these dependencies are installed correctly.

Method 2: Use imageio library

imageioIt is a library that processes image input and output, and supports a variety of image formats, including GIFs. It can read images frame by frame from a video file and write them to a GIF file.

Step 1: InstallimageioLibrary

Install via pipimageioLibrary:

pip install imageio

Step 2: Write the conversion code

Use the following Python code to convert MP4 videos to GIFs:

import imageio

# Enter the MP4 file pathinput_video_path = 'input_video.mp4'

# Output GIF file pathoutput_gif_path = 'output_video.gif'

# Read video filesreader = imageio.get_reader(input_video_path)

# Create a GIF writer, set the frame rate and frame size (optional)writer = imageio.get_writer(output_gif_path, mode='I', fps=10)

# Loop every frame in the video and write it to the GIFfor frame in reader:
    writer.append_data(frame)

# Close the writer and complete the conversion()

print(f"GIF has been created at {output_gif_path}")

Method 3: Use opencv and PIL library

opencvis a powerful computer vision library, andPIL(Pillow) is an image processing library. Combining these two libraries, you can read video frames, process them, and save them as GIFs.

Step 1: Installopencv-pythonandPillowLibrary

Install these two libraries through pip:

pip install opencv-python pillow

Step 2: Write the conversion code

Use the following Python code to convert MP4 videos to GIFs:

import cv2
import numpy as np
from PIL import Image, ImageSequence

# Enter the MP4 file pathinput_video_path = 'input_video.mp4'

# Output GIF file pathoutput_gif_path = 'output_video.gif'

# Open the video filecap = (input_video_path)

# Get the total number of frames and frame rates of the videoframe_count = int((cv2.CAP_PROP_FRAME_COUNT))
fps = (cv2.CAP_PROP_FPS)

# Define the time interval (in seconds) to be intercepted, for example from 0 seconds to 5 secondsstart_time = 0
end_time = 5

# Calculate the corresponding frame intervalstart_frame = int(start_time * fps)
end_frame = int(end_time * fps)

# Create a list to store framesframes = []

# traverse each frame in the frame interval from the start frame(cv2.CAP_PROP_POS_FRAMES, start_frame)
for i in range(start_frame, end_frame):
    ret, frame = ()
    if not ret:
        break
    # Convert BGR format frames to RGB format    frame_rgb = (frame, cv2.COLOR_BGR2RGB)
    # Add frame to the list    ((frame_rgb))

# Release the video file handle()
()

# Save the frame list as a GIF fileframes[0].save(output_gif_path, save_all=True, append_images=frames[1:], duration=int(1000/fps), loop=0)

print(f"GIF has been created at {output_gif_path}")

Things to note

  • Parameters such as path, file name, frame rate and time interval in the above code example can be adjusted according to actual needs.
  • useopencvandPILWhen library, you need to pay attention to image format conversion (such as BGR to RGB).
  • The quality and size of the converted GIF file depends on factors such as the quality of the original video, the selected frame rate and frame size.

Summarize

Through this article, you have learned three ways to convert MP4 videos into GIF images:moviepyLibrary,imageioLibrary and combinationopencvandPILlibrary. Each method has its own unique advantages and applicable scenarios. Choose a library that suits your needs and environment, and you can easily convert videos to GIF images, adding more fun and possibilities to your content creation.

This is the end of this article about three methods of converting MP4 videos into GIF images in Python. For more related content to convert Python MP4 to GIF, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!