DEV Community

TheDigitalBricklayer
TheDigitalBricklayer

Posted on

Automações: Editando Shorts com programação

O problema: Tempo.

Tenho pouco tempo para gravar conteúdos para o canal e queria aproveitar os vídeos longos que faço para o formato vertical.

Eu pegava esses vídeos longos, gerava uma lista com 5-6 vídeos curtos (shorts <1 minuto) para então jogar no editor e cortar esses vídeos, converter no formato vertical, colocar a logo do canal e ctas (call to action, curte, comenta, se inscreve e informando que era um vídeo curto para um vídeo maior).

Isso consome muito tempo, e trabalho manual que minha mão grita de dor pois tenho lesões nas duas mãos.

Quebrando o problema em etapas menores:

  • Cortar os vídeos em tamanho máximo de 59 segundos.
  • Converter os vídeos para formato vertical, eu gravo em 16:9 formatos verticais são 9:16.
  • Adicionar o layer de cta do canal Image description

Iremos falar da primeira etapa hoje, cortar os vídeos em no máximo 59 segundos. Aqui tem um trabalho manual de assistir o vídeo e anotar uma minutagem de início, fim e nome do arquivo para o corte ser realizado.

Feito essa planilha no formato csv, ela será o input do script que escrevi e vou ler a mesma utilizando a lib csv do python.

Image description

Faço validação pois preciso ter os campos que mencionei acima e sigo para criar os vídeos no formato vertical. Nesse ponto para cada vídeo longo eu vou criar n vídeos dependendo das entradas da planilha e o nome dos arquivos segue o formato abaixo:

Image description

Onde um dicionário foi criado para marcar o nome do arquivo de saída com um contador, pois para cada entrada abaixo vai ser formado uma saída dessa forma:

{basename}_{counter}{extension}

Em outras palavras, informado a planilha abaixo:
Image description

Eu tenho a saída:
Image description

Tudo certo, agora precisamos cortar o vídeo de fato, para isso vamos utilizar FFmpeg, software utilizado para manipular, editar etc arquivos de áudio e vídeo.

Procurando na doc e stackoverflow e chat gpt para explicar os comandos consegui realizar o comando abaixo:

Estou rodando o ffmpeg no terminal e os comandos ditam:

Image description

“”ss” - Inicio do corte
“to” - Fim do corte
“-i” - Arquivo de entrada”

Rodando esse comando eu consigo cortar os vídeos dado um início e fim e o nome de saída, agora falta integrar isso no python e tá pronto o sorvetinho certo?

Não!

Image description

Detectei um problema onde há uma falha de sincronização entre o áudio e o vídeo. A faixa de áudio começava primeiro e após alguns segundos aparecia o vídeo, ouch!!

Pesquisa, pesquisa e mais pesquisa.

Chatgpt me explicou alguns comandos que achei na doc (a doc é bem triste de ler do ffmpeg).

Vamos de teste com o novo comando:

ffmpeg -ss 00:00:00 -t 00:00:10 -i branding.mp4 -vcodec copy -acodec copy -avoid_negative_ts make_zero potato.mp4

Agora podemos comemorar

Image description

Agora é juntar isso tudo no python, criar um subprocesso para chamar o ffmpeg e cortes rápidos igual aquela marca de faca (patrocina nós) .

Vou utilizar a lib subprocess para abrir o processo de chamar o ffmpeg que está instalado no meu sistema operacional e aguardar até que o vídeo seja cortado.

result = subprocess.run([
'ffmpeg', '-ss', start_time, '-t', duration, '-i', filename,
'-vcodec', 'copy', '-acodec', 'copy', '-avoid_negative_ts', 'make_zero',
output_filename
], capture_output=True, text=True)

O pulo do gato para retirar a falha de sincronização foi justamente adicionar o parâmetro ('-avoid_negative_ts', 'make_zero') que evita de ter timestamp negativos e com isso não gerar a falha de sync entre vídeo e aúdio.

E seguimos fazendo isso para cada linha do csv que nos foi informado para processar e o resultado são vídeos cortados em até 59 segundos para serem colocados no formato vertical.

Por hoje era isso, receber o csv, cortar o vídeo, lidei com a dessincronização de áudio e vídeo e exportei os vídeos para a próxima etapa que é transformá-los em formato vertical. Irei trazer o artigo de conversão desses vídeos para vertical em um futuro próximo.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay