CodeGym /Cours Java /Python SELF FR /Superposition et animation d'éléments dans une vidéo : cr...

Superposition et animation d'éléments dans une vidéo : création de texte et de graphiques animés

Python SELF FR
Niveau 48 , Leçon 0
Disponible

1. Ajout de texte et animation de son mouvement

MoviePy – c'est juste un outil incroyable qui permet de transformer des vidéos ennuyeuses en chefs-d'œuvre cinématographiques. Enfin, ou au moins en quelque chose d'un peu plus fun, avec du texte et des graphiques en mouvement. On commence par voir comment ajouter des éléments statiques sur une vidéo, et ensuite, on passe à la magie – l'animation.

Ajout de texte et animation de son mouvement

Pour créer du texte et l'animer dans MoviePy, on utilise TextClip, qui permet de définir le texte, la police, la couleur et d'autres paramètres. Ensuite, avec la méthode set_position(), on peut définir le mouvement du texte sur l'écran.

Texte en mouvement horizontal

Dans cet exemple, le texte bougera de gauche à droite.


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# Chargement de la vidéo principale
video = VideoFileClip("sample_video.mp4")

# Création d'un clip texte
text = TextClip("Texte en mouvement", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)

# Superposition du texte sur la vidéo
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)

Dans ce cas :

  • TextClip("Texte en mouvement", fontsize=50, color='white') crée un texte blanc avec une taille de police de 50.
  • set_position(lambda t: (int(200 * t), 100)) crée une animation où le texte se déplace vers la droite à une vitesse constante.
  • CompositeVideoClip([video, text]) combine le clip texte et le clip vidéo principal.

Animation de texte avec changement de direction

Vous pouvez aussi créer des trajectoires plus complexes pour le texte, en combinant des mouvements horizontaux et verticaux.

Texte en mouvement diagonal

Dans cet exemple, le texte se déplacera en diagonale.


text = TextClip("Texte en diagonale", fontsize=50, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_diagonal_text.mp4", fps=24)

Dans ce cas :

  • La fonction set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))) crée un mouvement en diagonale, combinant les décalages horizontaux et verticaux du texte.

Animation de texte avec effet d'apparition et de disparition

Pour que le texte apparaisse et disparaisse, on peut modifier son opacité en fonction du temps. Pour cela, MoviePy utilise les méthodes fadein() et fadeout().

Apparition et disparition progressive du texte


# Texte avec effet d'apparition et disparition progressive
text = TextClip("Texte qui apparaît", fontsize=40, color='blue')
text = text.set_position(('center', 'bottom')).set_duration(5).fadein(1).fadeout(1)

final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_fade_text.mp4", fps=24)

Dans ce cas :

  • fadein(1) et fadeout(1) ajoutent respectivement une apparition et une disparition progressive sur une durée d'une seconde.

2. Insertion d'éléments graphiques

Ajout d'images et animation de leur mouvement

En plus du texte, MoviePy permet d'ajouter des images à une vidéo avec la classe ImageClip. Vous pouvez animer une image en définissant sa trajectoire et en modifiant sa position avec set_position().

Animation d'un logo se déplaçant de bas en haut


from moviepy.editor import VideoFileClip, ImageClip

# Chargement de la vidéo et de l'image
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)

# Animation du logo – déplacement de bas en haut
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Superposition du logo sur la vidéo
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)

Dans ce cas :

  • ImageClip("logo.png").set_duration(5) charge l'image du logo et définit sa durée.
  • set_position(lambda t: ('center', int(500 - 100 * t))) fait bouger le logo de bas en haut, verticalement.

Apparition d'image avec augmentation de l'échelle

Un autre effet sympa consiste à faire apparaître l'image avec une augmentation progressive de sa taille.


# Chargement de l'image
logo = ImageClip("logo.png").set_duration(5)

# Réglage de l'échelle de l'image pour l'effet d'agrandissement
logo = logo.resize(lambda t: 1 + 0.5 * t)  # Agrandissement progressif
logo = logo.set_position(('center', 'center'))

# Superposition du logo avec animation de zoom sur la vidéo
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)

Dans ce cas :

  • logo.resize(lambda t: 1 + 0.5 * t) augmente l'échelle du logo de 50% par seconde, créant un effet de zoom.

3. Combinaison de plusieurs éléments animés

MoviePy permet de combiner plusieurs éléments animés dans une seule vidéo. Par exemple, on peut ajouter du texte qui se déplace horizontalement tout en faisant bouger une image verticalement.

Animation simultanée de texte et d'image


# Création de texte se déplaçant horizontalement
text = TextClip("Texte et image", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)

# Animation d'un logo de bas en haut
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Superposition du texte et du logo sur la vidéo
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)

Dans ce cas :

  • On crée une animation de texte qui se déplace de gauche à droite, et un logo qui se déplace de bas en haut.
  • CompositeVideoClip([video, text, logo]) combine les deux éléments animés sur la vidéo principale.

Création d'une animation combinant texte et graphiques

Dans cet exemple, on réalise une vidéo complète où le texte se déplace en diagonale, et où le logo apparaît progressivement avec un effet d'agrandissement.


from moviepy.editor import VideoFileClip, TextClip, ImageClip, CompositeVideoClip

# Chargement de la vidéo
video = VideoFileClip("sample_video.mp4")

# Texte se déplaçant en diagonale
text = TextClip("Texte animé", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

# Logo avec effet d'agrandissement progressif et apparition progressive
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)

# Superposition du texte et du logo sur la vidéo
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)

Erreurs à surveiller

Parfois, le texte ou les graphiques peuvent ne pas se reproduire comme prévu. Cela peut être dû à une mauvaise configuration du temps ou de la position. Vérifiez les expressions logiques que vous utilisez et n'hésitez pas à déboguer votre code.

Une autre question fréquente : pourquoi ma vidéo ne se sauvegarde-t-elle pas dans le bon format? Assurez-vous d'avoir les codecs nécessaires pour l'export. MoviePy simplifie ça, mais il peut y avoir des problèmes de compatibilité qui se résolvent souvent en installant des bibliothèques supplémentaires.

Ce cours est désormais terminé. Vous savez maintenant comment ajouter texte et graphiques à vos vidéos, et les rendre dynamiques et vivants. Dans les conférences suivantes, de nouvelles techniques passionnantes vous attendent, alors restez avec nous et continuez à développer vos compétences !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION