MoviePy pour Python : guide complet du montage vidéo
Introduction à la bibliothèque MoviePy
Travailler avec la vidéo est souvent associé à des outils lourds et des API complexes. Mais en Python, il existe une bibliothèque qui rend le montage vidéo simple et expressif : MoviePy. Elle permet de créer, éditer, combiner et exporter des vidéos avec un minimum de code.
MoviePy est construite sur FFmpeg et prend en charge de nombreux formats vidéo et audio. La bibliothèque est idéale pour créer des vidéos dynamiques, générer des mèmes, effectuer du montage programmatique, de l'animation et synchroniser avec l'audio. MoviePy est activement utilisée par les développeurs pour automatiser la production vidéo, créer du contenu pour les réseaux sociaux et traiter des fichiers multimédia à grande échelle.
Les principaux avantages de MoviePy incluent une syntaxe simple, des fonctionnalités riches, la prise en charge de nombreux formats, l'intégration avec NumPy et la possibilité de créer des compositions complexes sans connaissances approfondies des codecs vidéo.
Installation et configuration de MoviePy
Installation via pip
pip install moviepy
Dépendances supplémentaires
Pour un fonctionnement correct, MoviePy nécessite FFmpeg. Dans la plupart des cas, il s'installe automatiquement, mais en cas de problème :
Windows :
# Via chocolatey
choco install ffmpeg
# Ou télécharger depuis le site officiel
macOS :
brew install ffmpeg
Linux :
sudo apt install ffmpeg # Ubuntu/Debian
sudo yum install ffmpeg # CentOS/RHEL
Vérification de l'installation
from moviepy.editor import VideoFileClip
print("MoviePy installé avec succès !")
Bases du travail avec les fichiers vidéo
Chargement d'une vidéo
from moviepy.editor import VideoFileClip
# Chargement du fichier vidéo
clip = VideoFileClip("video.mp4")
# Obtention des informations sur la vidéo
print(f"Durée : {clip.duration} secondes")
print(f"Taille : {clip.size}")
print(f"FPS : {clip.fps}")
Travail avec différents formats
MoviePy prend en charge une large gamme de formats vidéo :
- MP4, AVI, MOV, WMV
- MKV, FLV, WebM
- GIF (format d'entrée et de sortie)
Opérations de montage de base
Coupe et découpage vidéo
# Coupe temporelle
clip_cut = clip.subclip(10, 20) # de la 10e à la 20e seconde
# Coupe depuis le début
clip_from_start = clip.subclip(0, 30)
# Coupe jusqu'à la fin
clip_to_end = clip.subclip(15)
# Suppression d'un fragment
clip_without_part = clip.cutout(5, 15)
Redimensionnement et qualité
# Redimensionnement par hauteur
resized = clip.resize(height=480)
# Redimensionnement par largeur
resized = clip.resize(width=640)
# Mise à l'échelle proportionnelle
resized = clip.resize(0.5) # 50% de la taille d'origine
# Changement de FPS
fps_changed = clip.set_fps(30)
Rotation et miroir
# Rotation à 90 degrés
rotated = clip.rotate(90)
# Miroir horizontal
from moviepy.video.fx import mirror_x
mirrored = mirror_x(clip)
# Miroir vertical
from moviepy.video.fx import mirror_y
mirrored_y = mirror_y(clip)
Travail avec le texte et les titres
Création de clips textuels
from moviepy.editor import TextClip, CompositeVideoClip
# Texte simple
text = TextClip("Bonjour le monde !", fontsize=70, color='white', font='Arial-Bold')
text = text.set_position('center').set_duration(5)
# Texte avec fond
text_with_bg = TextClip("Titre", fontsize=50, color='white',