CodeGym /Java Course /Python SELF IT /Tagliare un video in clip separati e unire i clip in un n...

Tagliare un video in clip separati e unire i clip in un nuovo progetto video

Python SELF IT
Livello 47 , Lezione 3
Disponibile

1. Taglio di video

In questa lezione concentreremo la nostra attenzione sul taglio dei video e sull'unione dei clip utilizzando la libreria MoviePy. Imparerai come dividere un video in parti e come creare da queste un vero e proprio progetto video. Una sorta di "colazione video" fatta di pezzi dei tuoi tutorial preferiti di programmazione in stile "Python-mix".

Iniziamo con come dividere un video in frammenti. Questo può tornare utile in diverse situazioni: dalla creazione di demo per le tue ultime scoperte scientifiche al taglio di tutti i momenti in cui fai l'occhiolino durante le conferenze Zoom.

Divisione video per intervallo di tempo

Dividere un video in frammenti si basa sull'utilizzo del metodo cut in MoviePy. Possiamo specificare intervalli di tempo iniziale e finale che ci interessano.


from moviepy.editor import VideoFileClip

# Carichiamo il video
clip = VideoFileClip("input_video.mp4")

# Tagliamo il frammento dal secondo 10 al secondo 20
clip1 = clip.subclip(10, 20)

# Salviamo il frammento tagliato
clip1.write_videofile("clip1.mp4")

Questo codice taglia un frammento tra il decimo e il ventesimo secondo del video originale. Per risparmiare nervi e spazio sul disco, assicurati di specificare correttamente i timestamp per evitare di ottenere un "frammento casuale" con la tua pausa caffè in remoto.

Taglio del video in più parti

Puoi dividere un video in più parti e salvarle come clip separati per unione successiva.

Taglio del video in tre frammenti

Supponiamo di avere un video della durata di 30 secondi e vogliamo dividerlo in tre frammenti uguali di 10 secondi ciascuno.


# Creazione di tre frammenti uguali
clip1 = video.subclip(0, 10)
clip2 = video.subclip(10, 20)
clip3 = video.subclip(20, 30)

# Salvataggio dei frammenti
clip1.write_videofile("clip_part1.mp4")
clip2.write_videofile("clip_part2.mp4")
clip3.write_videofile("clip_part3.mp4")

Questo codice crea tre clip video:

  1. clip1 — dal secondo 0 al secondo 10,
  2. clip2 — dal secondo 10 al secondo 20,
  3. clip3 — dal secondo 20 al secondo 30.

Ogni frammento viene salvato come file video separato.

Taglio dei frammenti più interessanti

Spesso, un solo frammento non basta e hai bisogno di un vero e proprio bouquet di "fiori video". Possiamo creare diversi frammenti e salvarli.


clip2 = clip.subclip(30, 40)
clip3 = clip.subclip(50, 60)

clip2.write_videofile("clip2.mp4")
clip3.write_videofile("clip3.mp4")

Ora abbiamo tre frammenti tagliati dal video originale. Quasi come costruire un puzzle, ma al contrario.

2. Unione dei clip

Dopo il taglio, è ora di raccogliere di nuovo il nostro "nuvolo video", ma in una nuova forma rielaborata. Le funzionalità di MoviePy per unire più clip in uno ci aiuteranno in questo.

Creazione di compilation di clip video

Per unire i clip, utilizziamo il metodo concatenate_videoclips. Questo metodo permette di mettere insieme i clip in una sequenza specificata.


from moviepy.editor import concatenate_videoclips

# Uniamo i clip in uno solo
final_clip = concatenate_videoclips([clip1, clip2, clip3])

# Salviamo il video unito
final_clip.write_videofile("final_video.mp4")

Ora abbiamo un nuovo progetto video che rappresenta una raccolta dei tuoi momenti migliori. O casuali, se ti sei scordato dell'ordine.

Aggiunta di audio durante l’unione dei clip

Durante l’unione dei clip video, puoi anche aggiungere una traccia audio. Ad esempio, se hai un file musicale o un altro clip audio, puoi sovrapporlo al video unito.

Unione dei clip video con aggiunta di una traccia audio


from moviepy.editor import AudioFileClip

# Creazione di un clip audio
audio_clip = AudioFileClip("background_music.mp3")

# Aggiunta del clip audio al video unito
final_clip_with_audio = final_clip.set_audio(audio_clip)
final_clip_with_audio.write_videofile("combined_with_audio.mp4")

Qui:

  • AudioFileClip("background_music.mp3") crea un clip audio da un file musicale.
  • set_audio(audio_clip) aggiunge la traccia audio al video unito final_clip.

3. Transizioni tra i clip

In MoviePy, per creare transizioni tra i clip, si utilizza la classe CompositeVideoClip e vari effetti. L'idea chiave è sovrapporre un clip su un altro utilizzando effetti come trasparenza o spostamento. Le transizioni spesso includono variazioni di trasparenza o frame in movimento per rendere il passaggio tra un clip e l'altro più fluido.

Transizione con dissolvenza graduale (Fade)

La dissolvenza è una delle transizioni più popolari, in cui il primo clip scompare gradualmente e il secondo appare gradualmente sullo schermo. Questo effetto si crea con le funzioni crossfadein() o crossfadeout().

Transizione con dissolvenza tra due clip


from moviepy.editor import VideoFileClip, concatenate_videoclips

# Caricamento di due clip video
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)  # Primo clip di 5 secondi
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)  # Secondo clip di 5 secondi

# Impostazione dell'effetto dissolvenza
clip1 = clip1.crossfadeout(1)  # Dissolvenza in uscita del clip 1 di 1 secondo
clip2 = clip2.crossfadein(1)   # Dissolvenza in entrata del clip 2 di 1 secondo

# Unione dei clip con la transizione
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_transition.mp4")

In questo esempio:

  • crossfadeout(1) rende gradualmente il primo clip meno trasparente per un secondo.
  • crossfadein(1) rende gradualmente il secondo clip più trasparente per un secondo.
  • concatenate_videoclips([clip1, clip2], method="compose") unisce i due clip con la transizione dissolvenza.

Transizione con oscuramento

L'oscuramento (o "fade to black") è un effetto in cui il primo clip si dissolve in uno schermo nero, e successivamente il clip successivo appare dall'oscurità. Questa transizione crea un effetto di completamento di una scena prima dell'inizio della successiva.


from moviepy.editor import VideoFileClip, concatenate_videoclips

# Caricamento di due clip
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)

# Impostazione dell'oscuramento
clip1 = clip1.fadeout(1)  # Dissolvenza del clip 1 al nero
clip2 = clip2.fadein(1)   # Apparizione del clip 2 dal nero

# Unione dei clip con oscuramento
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_to_black_transition.mp4")

Qui:

  • fadeout(1) dissolve il clip in uno schermo nero in un secondo.
  • fadein(1) fa apparire gradualmente il secondo clip dallo schermo nero.

Ora il tuo video non è solo una raccolta di frammenti, ma un vero e proprio successo con transizioni fluide. Come vedi, abbiamo aggiunto effetti di entrata e uscita per rendere il video più omogeneo.

4. Applicazione pratica

Le competenze che hai acquisito in questa lezione sono molto utili. Immagina di creare un tutorial di programmazione, uno spot pubblicitario per una nuova libreria o un montaggio sulla nascita del tuo gatto nel mondo dell'IT (sì, succede anche questo!). Sapere come tagliare i video e unirli in blocchi tematici è un passo verso diventare un vero e proprio maestro del montaggio video e dell'automazione.

Errori tipici

Durante il lavoro con il taglio e l'unione dei video, presta attenzione ai timestamp. Abbiamo tutti visto quei momenti in cui un video si interrompe improvvisamente (e iniziano di nuovo quelle noiose slide della conferenza). Assicurati che i tuoi timestamp siano corretti e che non ci siano errori. MoviePy a volte può lamentarsi di formati errati o clip vuoti, quindi controlla il codice per eventuali errori prima di eseguirlo.

Spero che ora tu non sia solo armato di conoscenze, ma senta anche una leggera eccitazione per le possibilità che si aprono davanti a te. Avanti, nel mondo del montaggio video e delle soluzioni creative con Python e MoviePy!

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