1. Découpage de vidéo
Dans cette session, on va surtout se concentrer sur le découpage de vidéos et l'assemblage des clips avec la librairie MoviePy. Vous apprendrez à diviser une vidéo en plusieurs parties et comment créer des projets vidéo complets à partir de ces parties. Genre, un petit "petit-déj vidéo" avec des morceaux de vos tutos préférés en mode "Python-mix".
Commençons par apprendre à diviser une vidéo en fragments. Cela peut être utile dans plein de situations : pour créer une démo de vos dernières découvertes scientifiques ou pour compiler tous les moments où vous clignez de l'œil pendant vos meetings Zoom.
Division d'une vidéo par durées
Découper une vidéo en fragments, c'est easy avec la méthode cut de MoviePy. On peut définir des intervalles de temps précis qui nous intéressent.
from moviepy.editor import VideoFileClip
# Charger la vidéo
clip = VideoFileClip("input_video.mp4")
# Découper un fragment de 10 à 20 secondes
clip1 = clip.subclip(10, 20)
# Sauvegarder le fragment découpé
clip1.write_videofile("clip1.mp4")
Ce bout de code extrait un fragment entre la 10ème et la 20ème seconde de la vidéo originale. Pour éviter de vous retrouver avec des bouts randoms (genre votre pause café à distance), pensez à bien vérifier vos timestamps avant sauvegarde.
Découper une vidéo en plusieurs parties
Vous pouvez découper une vidéo en plusieurs parties et sauvegarder chacune d'elles pour les assembler ensuite.
Découper une vidéo en trois fragments
Disons qu'on a une vidéo de 30 secondes, et qu'on veut la diviser en trois fragments de 10 secondes chacun.
# Création de trois fragments égaux
clip1 = video.subclip(0, 10)
clip2 = video.subclip(10, 20)
clip3 = video.subclip(20, 30)
# Sauvegarde des fragments
clip1.write_videofile("clip_part1.mp4")
clip2.write_videofile("clip_part2.mp4")
clip3.write_videofile("clip_part3.mp4")
Ce code produit trois clips :
clip1— de 0 à 10 secondes,clip2— de 10 à 20 secondes,clip3— de 20 à 30 secondes.
Chaque fragment est sauvegardé comme un fichier vidéo séparé.
Extraire les parties les plus intéressantes
Parfois, un seul fragment ne suffit pas, et vous avez besoin d'un combo sympa. On peut créer plusieurs extraits et les sauvegarder.
clip2 = clip.subclip(30, 40)
clip3 = clip.subclip(50, 60)
clip2.write_videofile("clip2.mp4")
clip3.write_videofile("clip3.mp4")
Maintenant, on a trois extraits tirés de la vidéo originale. Genre assembler des pièces d'un puzzle, sauf qu'on les sépare au lieu de les unir.
2. Assemblage de clips
Une fois les clips découpés, c'est parti pour les rassembler, mais en mode créatif. MoviePy propose des fonctionnalités pour assembler plusieurs clips en un seul.
Créer des compilations de clips vidéo
Pour combiner des clips, on utilise la méthode concatenate_videoclips. Cette méthode permet d'aligner les clips les uns après les autres dans l'ordre voulu.
from moviepy.editor import concatenate_videoclips
# Combiner les clips en un seul
final_clip = concatenate_videoclips([clip1, clip2, clip3])
# Sauvegarder la vidéo combinée
final_clip.write_videofile("final_video.mp4")
Et voilà, vous avez un nouveau projet vidéo qui compile vos meilleurs moments. Ou des bouts random si vous avez zappé l'ordre des clips.
Ajouter de l'audio lors de l'assemblage
En assemblant les clips vidéo, vous pouvez aussi ajouter une bande sonore. Par exemple, avec un fichier musical ou un autre clip audio, vous pouvez l'incorporer sur la vidéo combinée.
Combiner des clips vidéo avec une bande sonore
from moviepy.editor import AudioFileClip
# Créer un clip audio
audio_clip = AudioFileClip("background_music.mp3")
# Ajouter le clip audio à la vidéo assemblée
final_clip_with_audio = final_clip.set_audio(audio_clip)
final_clip_with_audio.write_videofile("combined_with_audio.mp4")
Dans ce cas :
AudioFileClip("background_music.mp3")crée un clip audio à partir d'un fichier musical.set_audio(audio_clip)associe la bande sonore à la vidéofinal_clip.
3. Transitions entre clips
Avec MoviePy, pour créer des transitions entre les clips, on utilise la classe CompositeVideoClip et des effets variés. L'idée est de superposer un clip sur un autre avec des effets comme la transparence ou un décalage. Les transitions incluent souvent des changements progressifs qui rendent le passage d'un clip à un autre plus fluide.
Transition par fondu progressif (Fade)
Le fondu est l'une des transitions les plus populaires où un clip disparaît doucement pendant qu'un autre apparaît progressivement. Cet effet est réalisé avec les fonctions crossfadein() ou crossfadeout().
Transition par fondu entre deux clips
from moviepy.editor import VideoFileClip, concatenate_videoclips
# Charger deux clips vidéo
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5) # Premier clip de 5 secondes
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5) # Deuxième clip de 5 secondes
# Appliquer l'effet de fondu
clip1 = clip1.crossfadeout(1) # Fondu progressif de clip1 sur 1 seconde
clip2 = clip2.crossfadein(1) # Apparition progressive de clip2 sur 1 seconde
# Combiner les clips avec une transition
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_transition.mp4")
Dans cet exemple :
crossfadeout(1)rend le premier clip progressivement transparent sur une seconde.crossfadein(1)rend le deuxième clip progressivement visible sur une seconde.concatenate_videoclips([clip1, clip2], method="compose")assemble les deux clips avec la transition fondu.
Transition avec un fondu au noir
Le fondu au noir — ou "fade to black" — est un effet où le premier clip s'assombrit jusqu'à un écran noir, puis le clip suivant émerge de cet écran noir. Un bon moyen de marquer la fin d'une scène avant le début de la suivante.
from moviepy.editor import VideoFileClip, concatenate_videoclips
# Charger deux clips
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)
# Configurer le fondu au noir
clip1 = clip1.fadeout(1) # Disparition de clip1 vers le noir
clip2 = clip2.fadein(1) # Apparition de clip2 depuis le noir
# Combiner les clips avec fondu au noir
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_to_black_transition.mp4")
Dans ce cas :
fadeout(1)fait disparaître le premier clip vers un écran noir sur une seconde.fadein(1)fait émerger le deuxième clip depuis l'écran noir.
Et voilà, votre vidéo n'est plus juste une collection de fragments, mais une vraie œuvre d'art avec des transitions smooth. On a ajouté des effets de fondu pour donner plus de fluidité au montage.
4. Usage pratique
Les compétences apprises ici sont bien pratiques. Imaginez, vous créez un tuto de programmation, une pub pour une nouvelle librairie, ou le montage de l'anniversaire de votre chat se lançant dans le monde de l'IT (ouais, ça arrive !). Savoir découper et assembler des vidéos par blocs thématiques, c'est un pas de plus vers la maîtrise du montage vidéo et de l'automatisation.
Erreurs fréquentes
Quand vous bossez sur le découpage et l'assemblage, faites gaffe aux times stamps. Y a rien de pire qu'une vidéo qui se coupe soudainement (et on revient à ces slides ennuyeux de la conférence). Assurez-vous que vos marqueurs de temps sont justes et sans erreurs. MoviePy peut parfois râler sur des formats invalides ou des clips vides, alors revoyez bien votre code avant de l'exécuter.
J'espère qu'avec tout ça, vous êtes non seulement armé de connaissances mais aussi inspiré pour explorer toutes les possibilités qui s'offrent à vous. Allez, au boulot, et amusez-vous bien avec Python et MoviePy en montage vidéo !
GO TO FULL VERSION