1. Corte de vídeo
O foco principal desta aula é o corte de vídeos e a união de clipes utilizando a biblioteca MoviePy. Você vai aprender como dividir vídeos em partes e criar projetos completos a partir dessas partes. Uma espécie de "café da manhã audiovisual" com pedaços dos seus tutoriais favoritos de programação no estilo "Python-mix".
Vamos começar aprendendo como dividir vídeos em pedaços. Isso pode ser útil em diversas situações: desde criar uma demo para suas últimas descobertas científicas até cortar todos os momentos em que você pisca durante as reuniões no Zoom.
Divisão de vídeo por tempo
Dividir vídeos em fragmentos se baseia no uso do método cut
do MoviePy. Podemos definir os intervalos de tempo inicial e final que nos interessam.
from moviepy.editor import VideoFileClip
# Carregamos o vídeo
clip = VideoFileClip("input_video.mp4")
# Cortamos o fragmento de 10 a 20 segundos
clip1 = clip.subclip(10, 20)
# Salvamos o fragmento cortado
clip1.write_videofile("clip1.mp4")
Este código corta o fragmento entre os segundos 10 e 20 do vídeo original. Para poupar os nervos e espaço no disco rígido, certifique-se de indicar corretamente as marcas de tempo para não acabar com um fragmento "aleatório" de você tomando café na pausa do trabalho remoto.
Corte de vídeo em diversas partes
Você pode dividir o vídeo em várias partes e salvá-las como clipes separados para posteriormente juntá-los.
Corte de vídeo em três partes
Digamos que temos um vídeo com duração de 30 segundos e queremos dividi-lo em três partes iguais de 10 segundos cada.
# Criando três fragmentos iguais
clip1 = video.subclip(0, 10)
clip2 = video.subclip(10, 20)
clip3 = video.subclip(20, 30)
# Salvando os fragmentos
clip1.write_videofile("clip_part1.mp4")
clip2.write_videofile("clip_part2.mp4")
clip3.write_videofile("clip_part3.mp4")
Este código cria três videoclipes:
clip1
— de 0 a 10 segundos,clip2
— de 10 a 20 segundos,clip3
— de 20 a 30 segundos.
Cada fragmento é salvo como um arquivo de vídeo separado.
Corte dos trechos mais interessantes
Muitas vezes, um único fragmento não é suficiente, e você precisa de uma coleção inteira de "flores de vídeo". Podemos criar vários desses fragmentos e salvá-los.
clip2 = clip.subclip(30, 40)
clip3 = clip.subclip(50, 60)
clip2.write_videofile("clip2.mp4")
clip3.write_videofile("clip3.mp4")
Agora temos três fragmentos cortados do vídeo original. É quase como montar um quebra-cabeça, mas ao contrário.
2. União de clipes
Depois de cortar, é hora de juntar novamente nosso "nuvem de vídeo", mas em uma nova forma transformada. A MoviePy tem ferramentas para unir vários clipes em apenas um.
Criação de compilações de videoclipes
Para unir clipes, usamos o método concatenate_videoclips
. Este método permite organizar os clipes em sequência.
from moviepy.editor import concatenate_videoclips
# Juntamos os clipes em um só
final_clip = concatenate_videoclips([clip1, clip2, clip3])
# Salvamos o vídeo combinado
final_clip.write_videofile("final_video.mp4")
Agora temos um novo projeto de vídeo, que é uma coleção dos seus melhores momentos. Ou aleatórios, caso você tenha esquecido de organizar a sequência.
Adicionando áudio ao combinar clipes
Ao combinar videoclipes, também é possível adicionar uma trilha sonora. Por exemplo, se você tem um arquivo de música ou outro clipe de áudio, pode adicioná-lo ao vídeo combinado.
Unindo videoclipes com uma trilha sonora
from moviepy.editor import AudioFileClip
# Criação de um clipe de áudio
audio_clip = AudioFileClip("background_music.mp3")
# Adicionando o clipe de áudio ao vídeo combinado
final_clip_with_audio = final_clip.set_audio(audio_clip)
final_clip_with_audio.write_videofile("combined_with_audio.mp4")
Aqui:
AudioFileClip("background_music.mp3")
cria um clipe de áudio a partir de um arquivo de música.set_audio(audio_clip)
adiciona a trilha de áudio ao vídeo combinadofinal_clip
.
3. Transições entre clipes
Na MoviePy, para criar transições entre clipes, usamos a classe CompositeVideoClip
e efeitos variados. A ideia principal é sobrepor um clipe ao outro usando efeitos como transparência ou deslocamento. Muitas transições incluem mudanças de opacidade ou quadros deslizantes para que um clipe passe suavemente para o próximo.
Transição de esmaecimento gradual (Fade)
Esmaecer é uma das transições mais populares, onde o primeiro clipe desaparece suavemente e o próximo aparece gradualmente. Esse efeito é criado com as funções crossfadein()
ou crossfadeout()
.
Transição de esmaecimento entre dois clipes
from moviepy.editor import VideoFileClip, concatenate_videoclips
# Carregamos dois videoclipes
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5) # Primeiro clipe de 5 segundos
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5) # Segundo clipe de 5 segundos
# Configuramos o efeito de esmaecimento
clip1 = clip1.crossfadeout(1) # Esmaecimento do clipe 1 em 1 segundo
clip2 = clip2.crossfadein(1) # Aparição gradual do clipe 2 em 1 segundo
# Unimos os clipes com a transição
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_transition.mp4")
Neste exemplo:
crossfadeout(1)
faz o primeiro clipe ficar gradualmente mais transparente ao longo de um segundo.crossfadein(1)
faz o segundo clipe ficar gradualmente mais visível ao longo de um segundo.concatenate_videoclips([clip1, clip2], method="compose")
junta os dois clipes com a transição de esmaecimento.
Transição com escurecimento
O escurecimento (ou "fade para preto") é um efeito em que o primeiro clipe escurece até uma tela preta e, em seguida, o próximo clipe aparece do escuro. Esta transição cria a sensação de conclusão de uma cena antes de começar a próxima.
from moviepy.editor import VideoFileClip, concatenate_videoclips
# Carregamos dois clipes
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)
# Configuramos o escurecimento
clip1 = clip1.fadeout(1) # Escurecimento do clipe 1
clip2 = clip2.fadein(1) # Aparecimento do clipe 2 a partir do preto
# Unimos os clipes com o escurecimento
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_to_black_transition.mp4")
Aqui:
fadeout(1)
escurece o clipe até uma tela preta ao longo de um segundo.fadein(1)
faz o próximo clipe aparecer suavemente a partir de uma tela preta.
Agora seu vídeo não é apenas uma coleção de fragmentos, mas um verdadeiro hit com transições suaves. Como você pode ver, adicionamos efeitos de entrada e saída para tornar o vídeo mais fluido.
4. Aplicação prática
As habilidades adquiridas nesta aula são super úteis. Imagine criar um tutorial de programação, uma propaganda para uma nova biblioteca ou um vídeo documentando o nascimento do seu gato no mundo da TI (sim, isso acontece!). Saber cortar vídeos e uní-los em blocos temáticos é um passo para se tornar um verdadeiro mestre em edição de vídeo e automação.
Erros típicos
Ao trabalhar com corte e união de vídeos, tome cuidado com as marcas de tempo. Todos já vimos aqueles momentos em que o vídeo é interrompido inesperadamente (e os mesmos slides tediosos da conferência começam de novo). Certifique-se de que suas marcas de tempo estão corretas e que não há erros. A MoviePy pode reclamar de formatos incorretos ou clipes vazios, então revise seu código antes de executá-lo.
Espero que agora você não só esteja armado com conhecimento, mas também sinta uma emoção ao ver as possibilidades que se abriram para você. Vamos nessa, para o mundo da edição de vídeo e soluções criativas com Python e MoviePy!
GO TO FULL VERSION