CodeGym /Corso Java /Python SELF IT /Sovrapposizione e animazione degli elementi nel video: cr...

Sovrapposizione e animazione degli elementi nel video: creazione di testo e grafica in movimento

Python SELF IT
Livello 48 , Lezione 0
Disponibile

1. Aggiungere testo e animare il suo movimento

MoviePy è uno strumento semplicemente fantastico, che trasforma video noiosi in piccoli capolavori cinematografici. Beh, almeno in qualcosa con testo e grafica in movimento. Prima impariamo ad aggiungere elementi statici ai nostri video, e poi passiamo alla magia: l'animazione.

Aggiungere testo e animare il suo movimento

Per creare testo e animarlo in MoviePy si utilizza TextClip, che permette di specificare testo, font, colore e altri parametri. Poi, con il metodo set_position(), puoi definire il movimento del testo sullo schermo.

Testo in movimento orizzontale

In questo esempio il testo si muoverà da sinistra a destra.


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip

# Caricamento del video principale
video = VideoFileClip("sample_video.mp4")

# Creazione del clip di testo
text = TextClip("Testo in movimento", fontsize=50, color='white')
text = text.set_position(lambda t: (int(200 * t), 100)).set_duration(5)

# Sovrapposizione del testo sul video
final_video = CompositeVideoClip([video, text])
final_video.write_videofile("video_with_moving_text.mp4", fps=24)

Qui:

  • TextClip("Testo in movimento", fontsize=50, color='white') crea un testo bianco con dimensione del font 50.
  • set_position(lambda t: (int(200 * t), 100)) crea un'animazione in cui il testo si muove verso destra in orizzontale con velocità costante.
  • CompositeVideoClip([video, text]) combina il clip di testo e il clip video principale.

Animare il testo con cambi di direzione

Puoi anche creare traiettorie più complesse per il testo, combinando movimenti orizzontali e verticali.

Movimento diagonale del testo

In questo esempio il testo si muoverà in diagonale.


text = TextClip("Testo in 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)

Qui:

  • La funzione set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))) crea un movimento diagonale, combinando spostamenti del testo orizzontali e verticali.

Animare il testo con effetti di comparsa e scomparsa

Per far comparire e scomparire il testo, puoi regolare la sua trasparenza in base al tempo. In MoviePy usi i metodi fadein() e fadeout().

Comparsa e scomparsa graduale del testo


# Testo con effetto di comparsa e scomparsa graduale
text = TextClip("Testo che appare", 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)

Qui:

  • fadein(1) e fadeout(1) aggiungono una comparsa graduale del testo all'inizio e una scomparsa graduale alla fine per la durata di 1 secondo.

2. Inserire elementi grafici

Aggiungere immagini e animare il loro movimento

Oltre al testo, MoviePy ti consente di aggiungere immagini ai video utilizzando la classe ImageClip. Puoi animare un'immagine definendo la sua traiettoria e cambiando la sua posizione con set_position().

Animazione di un logo che si muove dal basso verso l'alto


from moviepy.editor import VideoFileClip, ImageClip

# Caricamento del video e immagine
video = VideoFileClip("sample_video.mp4")
logo = ImageClip("logo.png").set_duration(5)

# Animazione del logo — movimento dal basso verso l'alto
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Sovrapposizione del logo nel video
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_moving_logo.mp4", fps=24)

Qui:

  • ImageClip("logo.png").set_duration(5) carica l'immagine del logo e ne imposta la durata.
  • set_position(lambda t: ('center', int(500 - 100 * t))) fa muovere il logo dal basso verso l'alto in verticale.

Comparsa di un'immagine con zoom

Un altro effetto che puoi creare è la comparsa di un'immagine con un graduale aumento di dimensioni.


# Caricamento dell'immagine
logo = ImageClip("logo.png").set_duration(5)

# Impostazione dello zoom per l'effetto di ingrandimento
logo = logo.resize(lambda t: 1 + 0.5 * t)  # Aumento dello zoom
logo = logo.set_position(('center', 'center'))

# Sovrapposizione del logo con zoom al video
final_video = CompositeVideoClip([video, logo])
final_video.write_videofile("video_with_zoom_in_logo.mp4", fps=24)

Qui:

  • logo.resize(lambda t: 1 + 0.5 * t) aumenta lo zoom del logo del 50% ogni secondo, creando un effetto di avvicinamento.

3. Combinare più elementi animati

MoviePy ti permette di combinare più elementi animati in un unico video. Ad esempio, puoi aggiungere testo che si muove orizzontalmente e un'immagine che si muove in verticale contemporaneamente.

Animazione simultanea di testo e immagine


# Creazione del testo che si muove orizzontalmente
text = TextClip("Testo e immagine", fontsize=40, color='red')
text = text.set_position(lambda t: (int(200 * t), 50)).set_duration(5)

# Animazione del logo dal basso verso l'alto
logo = ImageClip("logo.png").set_duration(5)
logo = logo.set_position(lambda t: ('center', int(500 - 100 * t)))

# Sovrapposizione di testo e logo nel video
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("video_with_text_and_logo.mp4", fps=24)

Qui:

  • Creiamo l'animazione del testo che si muove da sinistra a destra e del logo che si sposta dal basso verso l'alto.
  • CompositeVideoClip([video, text, logo]) sovrappone entrambi gli elementi animati al video principale.

Creare animazioni di testo e grafica in un unico video

In questo esempio creeremo un video completo, in cui il testo si muove in diagonale, mentre il logo appare gradualmente e aumenta di scala.


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

# Caricamento del video
video = VideoFileClip("sample_video.mp4")

# Testo che si muove in diagonale
text = TextClip("Testo animato", fontsize=40, color='yellow')
text = text.set_position(lambda t: (int(100 + 50 * t), int(100 + 30 * t))).set_duration(5)

# Logo che si ingrandisce gradualmente e appare con transizione morbida
logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.5 * t).fadein(1)

# Sovrapposizione di testo e logo sul video
final_video = CompositeVideoClip([video, text, logo])
final_video.write_videofile("animated_text_and_logo.mp4", fps=24)

Errori da tenere in considerazione

A volte il testo o la grafica potrebbero non riprodursi come ti aspetti. Questo potrebbe dipendere da un tempo o una posizione specificati in modo errato. Controlla sempre le espressioni logiche che utilizzi e non dimenticare di fare debug al tuo codice.

Un'altra domanda frequente è: perché il mio video non viene salvato nel formato desiderato? Assicurati di avere installato i codec necessari per esportare il video. MoviePy rende tutto più semplice, ma a volte potrebbero insorgere problemi di compatibilità, che si risolvono generalmente installando librerie aggiuntive.

Questo è tutto per oggi! Ora sai non solo aggiungere testo e grafica ai video, ma anche renderli dinamici e vivaci. Nelle prossime lezioni esploreremo nuove fantastiche tecniche, quindi rimani con noi e continua a migliorarti!

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