CodeGym /Cursos /Python SELF PT /Adicionando texto, legendas e créditos em vídeos: configu...

Adicionando texto, legendas e créditos em vídeos: configuração de fontes, cores e posições

Python SELF PT
Nível 47 , Lição 4
Disponível

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:

Bash

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! 😎

1
Опрос
Fundamentos da Edição de Vídeo com MoviePy,  47 уровень,  4 лекция
недоступен
Fundamentos da Edição de Vídeo com MoviePy
Fundamentos da Edição de Vídeo com MoviePy
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION