17 de maio de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Como fazer cut com ffmpeg

cut com ffmpeg

O programa ffmpeg é gigantesco, não sei se alguém no mundo domina todas as combinações possíveis, mas algumas delas são bastante importantes saber. Já mostrei em outro artigo como fazer superres estilo CSI usando ffmpeg e há poucos artigos atrás mostrei também como converter um vídeo para poder importá-lo no Da Vinci Resolve. Nesse artigo veremos como fazer cut com ffmpeg passando início e fim do trecho desejado, e explico a situação em que foi necessário fazê-lo.

Pra que cortar um trecho do vídeo?

Se o que precisamos é um trecho do vídeo descartando todo o resto, podemos instalar um editor gráfico como o Da Vinci Resolve ou o KDEnLive, ou outro que seja. Porém o que precisei foi separar diversos trechos de uma gravação para fazer uma composição em outra ordem e momento. Assisti o vídeo que gravei de uma vez só, então marquei os intervalos úteis e necessários, que do vídeo todo eram apenas 5 momentos de intervalos menores que 2 minutos.

Instalar o ffmpeg

Primeiro, está disponível uma vasta documentação no site oficial para todos os propósitos.

Claro que se não tiver o programa instalado, será necessário fazê-lo. Em distribuições baseadas em Debian ou no Windows, usando o WSL com Ubuntu, podemos usar a ferramenta de gerenciamento de pacotes apt.

sudo apt-get update && sudo apt-get install ffmpeg

Comando para cut com início e fim no ffmpeg

Agora é moleza. Basta digitar o comando de forma similar a esse:

ffmpeg -i arquivo_do_video.mkv -ss 00:07:16 -t 00:00:57 -async 1 05.mov

Repare que com a flag -i indicamos o arquivo de entrada (que pode estar em qualquer formato suportado), então usamos a flag -ss para indicar a região inicial de interesse e a flag -t para indicar o fim, com sincronismo de áudio em seguida, e finalizando com o nome e formato desejado para o arquivo. Não usando o parâmetro copy, será feito reencode. O parâmetro -t indica o tempo, ou seja, a partir de ss + t.

Para determinar o corte usando o intervalo do vídeo, basta trocar -t por -to. E se quiser fazer cópia, não haverá reencode e o processo será muito mais rápido.

ffmpeg -ss 00:00:20 -i original.mp4 -to 00:00:40 -c copy saida.mp4

O comando é bem simples, mas servirá como referência no momento em que não me lembrar. Afinal, esse tipo de procedimento é usado de vez em quando, hum?

Extrair áudio do vídeo com ffmpeg

E em diversas situações preciso extrair um áudio de um vídeo, seja música, seja minha própria voz (faço algumas composições de áudio e vídeo separados). Esse é molezinha:

ffmpeg -i video.mp4 -vn audio.wav

O ffmpeg é uma das ferramentas de console mais complexas em minha opinião, pode ter uma quantidade gigantesca de codecs e combinações de comandos para um mesmo propósito. Conforme for havendo necessidade, escrevo mais a respeito.

Revisão: Ricardo Amaral de Andrade