Edição de Vídeo com ffmpeg
Com a pandemia veio a necessidade de dar aulas online. Essas aulas podem ser gravadas, mas normalmente uma aula tem conversas, momentos de preparação, espera dos alunos, problemas técnicos, tudo isso fica gravado e toma tempo e o arquivo de vídeo fica bem maioir, com pouca informação. Assim resolvi que iria editar meus vídeos antes de disponiblizá-los para os alunos. Usar um editor de vídeo não linear demora muito, posto que eu só queria cortar trechos do vídeo e depois concatená-los no vídeo final.
Assim apareceu a possibilidade de usar o ffmpeg na linha de comando. Aqui voiu mostrar meu fluxo de trabalho:
- Abro o vídeo com o vlc.
- Anoto os tempos que gostaria de cortar da versão final.
- Uso o comando:
ffmpeg
para cortar cada trecho, numerando sequencialmente cada um deles. - Transformo cada trecho para o formato
ts
, pois o formato mp4 não é concatenável. - Concateno tudo em um arquivo mp4 usando o
ffmpeg
.
Cortar trechos de um vídeo
Para extrair cada trecho, uso:
ffmpeg -i video_original.mp4 -vcodec copy -acodec copy -ss 00:34:14 -t 00:15:00 trecho001.mp4
no qual ss é o tempo onde começa o corte e t é sua duração.
Para transformar em ts, uso o comando:
ffmpeg -i trecho001.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts trecho1.ts
Para concatenar uso o comando:
ffmpeg -i "concat:trecho1.ts|trecho2.ts" -c copy -bsf:a aac_adtstoasc output.mp4
Atrasar o vídeo em relação ao aúdio
Para atrasar um vídeo em 1,04 segundos:
ffmpeg -i original.mp4 -itsoffset 1.04 -i original.mp4 -map 1:v -map 0:a -c copy video-saida.mp4
Atrasar o aúdio em relação ao vídeo
Para atrasar um aúdio de 1,04 segundos em relação ao vídeo
ffmpeg -i original.mp4 -itsoffset 1.04 -i original.mp4 -map 0:v -map 1:a -c copy synced.avi