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
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.
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:
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:
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:
“”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!
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
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.
Top comments (0)