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
VideoFileClip("fichier")
Charge la vidéo dans un objet VideoFileClip
. Les formats .mov
, .mp4
, etc. sont supportés.
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.
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.
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 |