Ffmpeg

Alguns comandos ffmpeg.

Etiquetas: LinuxSoftware

Relacionado com: LinuxSoftwaresWiki Pessoal

Criar um vídeo de uma sequência de imagens e vice-versa

Muitas vezes, quando queria criar um vídeo de uma sequência de imagens, só para ver como estava o resultado de uma animação, ou uma sequência de imagens para um stop-motion, usava um editor de vídeo para juntar tudo. Mas como tenho aprendido a usar a linha de comandos e bash, fui aprendendo a usar programas que me facilitavam o processo.

Um desses programas é o ffmpeg.

Criar um vídeo de uma sequência de imagens

Para criar um vídeo de um conjunto de imagens, usa-se o seguinte comando:

ffmpeg -framerate 24 -i frame_%04d.png output.mp4

Onde frame_%04d.png é o prefixo das imagens, por isso, a sequência de imagens existente deverá ter os seguintes nomes:

filenames:
frame_0000.png
frame_0001.png
frame_0002.png
frame_000n.png
...
frame_9999.png

Onde o frame_9999.png é o último frame (se assim a sequência de imagens chegar a esse número).
O %04d representa a sequência de quatro zeros.

Para começar numa imagem específica (por exemplo, na imagem 5), usar -start_number:

ffmpeg -framerate 24 -start_number 5 -i frame_%04d.png output.mp4

Criar uma sequência de imagens de um vídeo

Para exportar de um vídeo uma sequência de imagens com o uso do ffmpeg, o comando é o seguinte:

ffmpeg -i video.mp4 imagem-%03d.png

Este comando vai extrair 25 imagens por segundo do ficheiro video.mp4 e de seguida guarda as imagens com o seguinte nome: imagem-000.png, imagem-001.png, até imagem-999.png. A partir de aí, as imagens começam a ser substituídas, portanto deve-se ter cuidado com o valor de imagem-%03d (como explicado em cima).

Para extrair apenas uma imagem do vídeo, o comando é o seguinte:

ffmpeg -i video.mp4 -vf fps=1 imagem-%03d.png

E para extrair uma imagem de um frame/tempo específico:

ffmpeg -i video.mp4 -ss 00:00:10 -vframes 1 imagem.png

Cortar parte de vídeos

ffmpeg -ss 0 -t 100 -i source.mp4 -vcodec copy -acodec copy output.mp4
ou
ffmpeg -ss 00:00:00 -to 00:30:00 -i source.mp4 -vcodec copy -acodec copy output.mp4

Criar um loop de um vídeo

ffmpeg -stream_loop SECONDS -i input_video.mp4 -c copy OUTPUT.mp4

Criar um vídeo de uma única imagem

Através de uma única imagem, criar um vídeo com uma duração de 20 segundos, por exemplo:

ffmpeg -loop 1 -i input.jpg -c:v libx264 -t 20 -pix_fmt yuv420p output.mp4

Redimensionar vídeo

Para redimensionar um vídeo para um tamanho específico, como o 320x240, pode-se usar o seguinte comando:

ffmpeg -i input.mp4 -vf scale=320:240 output.mp4

Para manter a mesma resolução, pode-se especificar o que se pretende mudar, tendo o outro elemento -1 no valor, como o exemplo a seguir:

ffmpeg -i input.mp4 -vf scale=-1:240 output.mp4

Isto sabendo que scale=width:height. Além disso, também podem ser usadas as seguintes variáveis, como o iw (input width) e ih (input height), para redimensionar com base nos valores originais (podendo também ser usado o -1. Por exemplo:

ffmpeg -i input.mp4 -vf scale='iw/2:ih/2' output.mp4

Mas para mais comandos e informações, ver a documentação respetiva.