1. Introdução ao mundo mágico de texto no MoviePy
Bora mergulhar no mundo mágico da edição de vídeos com texto! Imagina que você é diretor de cinema e sua missão não é só fazer os personagens falarem, mas também controlar as palavras que aparecem na tela. Sim, isso é pura mágica das legendas e créditos!
Antes de começarmos, é importante entender uma coisa simples: o MoviePy não é só mais uma biblioteca pra lidar com vídeos. Ele é tipo o seu designer de vídeo pessoal, que pode ajudar a dar aquele toque estiloso e informativo ao seu projeto. Você já aprendeu o básico da edição de vídeos: cortar, juntar, uns efeitinhos — agora é a hora de subir de nível.
Por que adicionar texto?
Texto em vídeos é essencial — seja pra mostrar informações, criar créditos estilosos ou ajudar com legendas pra quem tá assistindo tarde da noite sem acordar os vizinhos. MoviePy faz isso de maneira prática e estilosa.
2. Trabalhando com texto
Bora começar com elementos de texto simples. Pra isso, o MoviePy oferece a função incrível chamada TextClip
, que adiciona texto nos seus clipes.
Criando um clipe de texto
A configuração básica de um clipe de texto fica mais ou menos assim:
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# Abrindo o arquivo de vídeo
video = VideoFileClip("sample_video.mp4")
# Criando o clipe de texto
txt_clip = TextClip("Oi, mundo!", fontsize=70, color='white')
# Ajustando a duração do clipe de texto
txt_clip = txt_clip.set_duration(video.duration)
# Ajustando a posição do texto
txt_clip = txt_clip.set_position('bottom')
# Combinando o vídeo com o texto
video_with_text = CompositeVideoClip([video, txt_clip])
# Salvando o resultado
video_with_text.write_videofile("output_video_with_text.mp4", fps=24)
Configurando fontes e cores
Você pode configurar facilmente a cor, a fonte e o tamanho do texto. No exemplo acima, a cor do texto é branca, mas você pode escolher qualquer outra, como:
txt_clip = TextClip("Oi, mundo!", fontsize=70, font='Amiri-bold', color='yellow')
Da mesma forma, você pode mudar a fonte, garantindo que a fonte desejada esteja instalada no seu sistema.
3. Posicionando texto na tela
O posicionamento do texto pode ser configurado usando o parâmetro set_position()
, que aceita valores de texto (como 'center'
, 'bottom'
) ou coordenadas específicas.
Posicionando texto em lugares diferentes
# Texto no topo
text_top = TextClip("Texto no topo", fontsize=30, color='blue').set_position(('center', 'top')).set_duration(5)
# Texto na parte inferior
text_bottom = TextClip("Texto na parte inferior", fontsize=30, color='green').set_position(('center', 'bottom')).set_duration(5)
# Texto em coordenadas específicas (x=100, y=100)
text_coords = TextClip("Texto em coordenadas específicas", fontsize=30, color='red').set_position((100, 100)).set_duration(5)
# Combinando todos os textos no vídeo
final_video = CompositeVideoClip([video, text_top, text_bottom, text_coords])
final_video.write_videofile("video_with_positioned_text.mp4")
Aqui:
('center', 'top')
: Posiciona o texto no centro superior.('center', 'bottom')
: Posiciona o texto no centro inferior.(100, 100)
: Define a posição do texto em coordenadas específicas.
Atualizando texto dinamicamente
Não basta adicionar texto, dá pra animar ele também — é isso que deixa o vídeo mais daora. Bora tentar animar o texto.
def move_text(t):
return 10, 100 * t # Movendo o texto pra baixo com o tempo
txt_clip = txt_clip.set_pos(move_text).set_duration(3)
4. Trabalhando com legendas
Legendas são textos sincronizados com momentos específicos do vídeo. Podemos carregá-las de arquivos ou criá-las manualmente.
Adicionando legendas manualmente
Vamos começar com um exemplo simples, onde adicionamos legendas ao vídeo. Para isso, criamos um clipe de texto e ajustamos o tempo de exibição:
# Criando legendas
subtitles = [
{"text": "Oi, mundo!", "start": 0, "end": 2},
{"text": "Isso é uma legenda!", "start": 2.5, "end": 5}
]
# Combinando o vídeo com as legendas
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)
Carregando legendas de um arquivo
Se você tiver um arquivo de legendas no formato SRT, pode carregá-lo de forma mais prática. O MoviePy suporta o carregamento desses arquivos, o que facilita muito.
Legendas geralmente são criadas nos formatos SRT ou VTT, que contêm o texto das legendas e os timestamps indicando quando cada trecho deve aparecer e desaparecer. Por exemplo, veja como pode ser um arquivo .srt
:
1
00:00:01,000 --> 00:00:04,000
Oi, isso é um exemplo de legenda.
2
00:00:05,000 --> 00:00:08,000
Essa legenda aparece um pouco depois.
Cada seção é composta por:
- Número da linha da legenda.
- Intervalo de tempo no formato
hora:minuto:segundo,milisegundo
. - Texto da legenda.
Instalando bibliotecas necessárias
O MoviePy não suporta carregamento direto de arquivos .srt
, mas isso pode ser feito com a biblioteca pysrt
. Ela ajuda a carregar e interpretar arquivos .srt
, que podem ser convertidos em clipes de texto para adicionar ao vídeo.
Instale as bibliotecas necessárias:
pip install moviepy pysrt
Carregando legendas de arquivo com PySRT
Primeiro, carregamos as legendas de um arquivo .srt
usando o pysrt
e as convertamos em clipes de texto para uso no MoviePy.
Carregando legendas de um arquivo e convertendo em clipes de texto
import pysrt
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
# Carregando o vídeo
video = VideoFileClip("sample_video.mp4")
# Carregando as legendas do arquivo
subtitles = pysrt.open("subtitles.srt", encoding='utf-8')
# Lista de clipes de texto para cada legenda
subtitle_clips = []
# Convertendo legendas em clipes de texto
for subtitle in subtitles:
# Texto da legenda
text = subtitle.text
# Tempo de início e fim da legenda em segundos
start_time = subtitle.start.seconds + subtitle.start.milliseconds / 1000.0
end_time = subtitle.end.seconds + subtitle.end.milliseconds / 1000.0
duration = end_time - start_time
# Criando clipe de texto para a legenda
text_clip = TextClip(text, fontsize=24, color='white', font="Arial")
text_clip = text_clip.set_position(('center', 'bottom')).set_start(start_time).set_duration(duration)
# Adicionando o clipe de texto à lista
subtitle_clips.append(text_clip)
# Combinando todas as legendas com o vídeo
final_video = CompositeVideoClip([video] + subtitle_clips)
final_video.write_videofile("video_with_subtitles.mp4")
Aqui:
on_color()
cria um fundo de cor específica (neste caso preto) para o clipe de texto.concatenate_videoclips()
une os créditos e o vídeo principal em um único arquivo.
Pronto, agora você domina os conceitos básicos de texto, legendas e créditos no MoviePy! 😎
GO TO FULL VERSION