1. Introduction au monde du texte avec MoviePy
Alors, prépare-toi à plonger dans le monde magique de l'édition vidéo en ajoutant du texte. Imagine que tu es réalisateur, et ta mission, ce n'est pas seulement de faire parler les personnages, mais aussi de contrôler les mots qui s'affichent à l'écran. Oui, c'est bien ça, la magie des sous-titres et des génériques !
Avant de commencer, il est important de comprendre une chose simple : MoviePy n'est pas juste une autre bibliothèque pour manipuler des vidéos. C'est ton designer vidéo personnel, prêt à apporter une touche de glamour et d'informativité à ton projet. Tu maîtrises déjà les bases de l'édition vidéo : couper, assembler, un soupçon d'effets spéciaux — passons au niveau supérieur.
Pourquoi ajouter du texte ?
Le texte dans une vidéo joue un rôle clé — ce sont des messages d'information, des génériques stylés, et surtout des sous-titres salvateurs pour ceux qui regardent ton travail tard dans la nuit, quand leurs voisins dorment. MoviePy permet de faire cela de manière élégante et pratique.
2. Travailler avec le texte
Commençons avec des éléments textuels simples. Pour cela, MoviePy offre une super fonction
TextClip
, qui permet d'ajouter du texte à tes clips.
Créer un clip textuel
La configuration de base d'un clip textuel ressemble à ceci :
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# On ouvre le fichier vidéo
video = VideoFileClip("sample_video.mp4")
# On crée un clip textuel
txt_clip = TextClip("Salut, monde !", fontsize=70, color='white')
# On définit la durée du clip textuel
txt_clip = txt_clip.set_duration(video.duration)
# On règle la position du texte
txt_clip = txt_clip.set_position('bottom')
# On compose la vidéo avec le texte
video_with_text = CompositeVideoClip([video, txt_clip])
# On sauvegarde le résultat
video_with_text.write_videofile("output_video_with_text.mp4", fps=24)
Configurer les polices et la couleur
Tu peux facilement personnaliser la couleur, la police et la taille du texte. Dans l'exemple ci-dessus, la couleur du texte est blanche, mais tu peux choisir une autre couleur, par exemple :
txt_clip = TextClip("Salut, monde !", fontsize=70, font='Amiri-bold', color='yellow')
De même, tu peux changer la police, à condition que la police requise soit installée sur ton système.
3. Positionner le texte à l'écran
Le positionnement du texte peut être configuré à l'aide de la méthode set_position()
, qui accepte
des valeurs textuelles (par exemple, 'center'
, 'bottom'
), ainsi que des coordonnées.
Placer le texte à différentes positions
# Texte placé en haut
text_top = TextClip("Texte en haut", fontsize=30, color='blue').set_position(('center', 'top')).set_duration(5)
# Texte placé en bas
text_bottom = TextClip("Texte en bas", fontsize=30, color='green').set_position(('center', 'bottom')).set_duration(5)
# Texte placé aux coordonnées (x=100, y=100)
text_coords = TextClip("Texte aux coordonnées", fontsize=30, color='red').set_position((100, 100)).set_duration(5)
# Superposition de tous les textes sur la vidéo
final_video = CompositeVideoClip([video, text_top, text_bottom, text_coords])
final_video.write_videofile("video_with_positioned_text.mp4")
Voici :
('center', 'top')
: Place le texte au centre en haut.('center', 'bottom')
: Place le texte au centre en bas.(100, 100)
: Définit la position du texte avec des coordonnées spécifiques.
Texte dynamique
Ne te contente pas d'ajouter du texte, fais-le bouger — c'est ce qui rend la vidéo vraiment captivante. Essayons d'animer le texte.
def move_text(t):
return 10, 100 * t # Faire descendre le texte avec le temps
txt_clip = txt_clip.set_pos(move_text).set_duration(3)
4. Travailler avec les sous-titres
Les sous-titres sont du texte synchronisé avec des moments spécifiques de la vidéo. On peut les importer depuis des fichiers ou les créer manuellement.
Ajouter des sous-titres manuellement
Commençons avec un exemple simple où nous ajoutons des sous-titres à une vidéo. Il faut créer un clip textuel et définir le moment de son apparition :
# Créons des sous-titres
subtitles = [
{"text": "Salut, monde !", "start": 0, "end": 2},
{"text": "Ceci est un sous-titre !", "start": 2.5, "end": 5}
]
# Composons la vidéo avec les sous-titres
sub_clips = [TextClip(sub['text'], fontsize=50, color='white')
.set_position(('center', 'bottom'))
.set_start(sub['start'])
.set_duration(sub['end'] - sub['start'])
for sub in subtitles]
video_with_subtitles = CompositeVideoClip([video] + sub_clips)
video_with_subtitles.write_videofile("output_video_with_subtitles.mp4", fps=24)
Importer des sous-titres depuis un fichier
Si tu as un fichier de sous-titres au format SRT, tu peux facilement les importer. MoviePy permet d'importer ces fichiers facilement, rendant le processus beaucoup plus simple.
Les sous-titres sont généralement créés aux formats SRT ou VTT, qui contiennent le texte
des sous-titres et les intervalles de temps indiquant quand chaque segment de texte doit apparaître et disparaître.
Par exemple, voici à quoi peut ressembler un fichier .srt
:
1
00:00:01,000 --> 00:00:04,000
Salut, ceci est un exemple de sous-titre.
2
00:00:05,000 --> 00:00:08,000
Ce sous-titre apparaît un peu plus tard.
Chaque section contient :
- Un numéro de ligne du sous-titre.
- Un intervalle de temps au format
heure:minute:seconde,millisecondes
. - Le texte du sous-titre.
Installer les bibliothèques nécessaires
MoviePy ne supporte pas directement le chargement des fichiers .srt
, mais c'est possible en
utilisant la bibliothèque pysrt
. Elle permet de charger et de traiter les fichiers
.srt
, qui peuvent ensuite être convertis en clips textuels pour être ajoutés à la vidéo.
Installe les bibliothèques nécessaires :
pip install moviepy pysrt
GO TO FULL VERSION