Comment créer un GIF à partir d'une vidéo en Python avec MoviePy ?

Introduction

Créer un GIF à partir d’un extrait vidéo est une manière utile (et amusante) d’obtenir de courtes animations en boucle, parfaites pour les présentations, les réseaux sociaux ou la documentation. La bibliothèque Python moviepy rend ce processus simple avec seulement quelques lignes de code.

Qu’est-ce que MoviePy ?

MoviePy est un module Python pour le montage vidéo. Il peut lire et écrire des fichiers vidéo/audio dans plusieurs formats, et permet de réaliser des tâches comme :

  • Couper des extraits vidéo
  • Assembler ou éditer des clips
  • Ajouter des effets ou du texte
  • Exporter des vidéos ou des GIFs

En interne, il s’appuie sur FFMPEG pour gérer l’encodage/décodage des vidéos.

Installer et vérifier MoviePy

Avant d’utiliser MoviePy, vous devez l’installer avec la commande suivante :

1
pip install moviepy

Vérifier la version installée

Pour confirmer l’installation et vérifier la version de MoviePy :

1
pip show moviepy

Exemple de sortie

1
2
3
4
5
Name: moviepy
Version: 2.1.1
Summary: Video editing with Python
Author: Zulko 2024
License: MIT License

Pourquoi la version est importante

La version de MoviePy que vous utilisez est essentielle, car certains noms de fonctions ont changé dans les versions récentes :

Fonctionnalité Ancienne version (≤1.0.x) Nouvelle version (≥2.x)
Redimensionner vidéo resize() resized()
Découper un segment subclip() subclipped()

Assurez-vous d’utiliser des noms de méthodes compatibles avec votre version.

Exemple : Créer un GIF

Voici un exemple fonctionnel en Python qui charge une vidéo, la découpe, la redimensionne, et l’exporte en GIF :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from moviepy import *

# Charger la vidéo
clip = VideoFileClip("input.mov")

# Découper de 2s à 3s et redimensionner à 40 %
clip = clip.resized(0.4).subclipped(2.0, 3.0)

# Exporter le GIF
clip.write_gif("output.gif", fps=10)

Sortie attendue

1
MoviePy - Building file output.gif with imageio.

Le fichier output.gif sera alors enregistré dans le répertoire courant.

Explication étape par étape

  1. VideoFileClip("fichier")

Charge la vidéo dans un objet VideoFileClip. Les formats .mov, .mp4, etc. sont supportés.

  1. subclipped(début, fin)

Découpe un extrait de la vidéo entre début et fin (en secondes). Par exemple :clip.subclipped(2.0, 3.0) extrait la portion entre 2s et 3s.

  1. resized(0.4)

Réduit la taille de la vidéo à 40 % de sa résolution initiale. Utile pour limiter la taille du fichier GIF.

  1. write_gif("nom.gif", fps=10)

Exporte l’extrait vidéo sous forme de GIF. Une fréquence d’image (FPS) plus basse donne un fichier plus léger, mais une animation moins fluide.

Remarque sur les performances : attention au temps de traitement

Si votre script semble figé ou met beaucoup de temps à générer le GIF, pas de panique.

Cela peut arriver si :

  • La vidéo d'origine a une très haute résolution (ex. 1080p ou 4K)
  • Le GIF couvre plusieurs secondes
  • Vous n’avez pas redimensionné la vidéo avant l’export

Solution

Pour accélérer le traitement, réduisez la taille avec resized() en utilisant un facteur plus petit. Par exemple :

1
clip = clip.resized(0.4)  # 40 % de la taille originale

Essayez des valeurs comme 0.4, 0.3, voire 0.2 pour les très grandes vidéos.

Si rien ne semble se passer...

Si le terminal semble bloqué ou que le GIF n’est pas généré :

  • Il est probable que MoviePy soit en train de traiter (surtout avec des clips lourds)
  • Appuyez sur Ctrl+C pour interrompre si nécessaire
  • Puis réessayez avec un extrait plus court ou un redimensionnement plus important

Cela peut considérablement réduire le temps de traitement et l’utilisation de mémoire.

Références

Lien Site
Convertir une vidéo en GIF avec Python blog.techchee.com
Documentation MoviePy zulko.github.io