Arquivo da tag: frame

FFmpeg: Extraindo imagens de um vídeo ( Snapshot ) – Parte II

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

Recebi uma dúvida bem plausível, sobre extrair imagens de um vídeo. Com os comandos fornecidos em meu ultimo POST, é possível atrasar a captura da imagem, para começar a extrair a partir de 10 segundos por exemplo, depois do vídeo ter iniciado, como mostra o comando a seguir:
ffmpeg -itsoffset -10 -i foo.avi -r 1 -s 800×600 -f image2 snapshot-%03d.jpeg

A dúvida seria exatamente essa:
“Se possuirmos um vídeo de 2 horas de duração, e precisarmos extrair somente uma imagem da posição 1 hora, 30 minutos e 20 segundos, como seria feito ?”

Simples:

Para isso utilizaremos o parametro -vframes, comando utilizado para limitar o numero de frames que vai ser capturado. No nosso caso será 1 frame. O outro comando, bastante similar ao -itsoffset, seria o -ss, serve para atribuir uma posição de inicio para capturarmos o nosso frame. Essa posição deve ser indicada como hh:mm:ss. Sendo hora : minutos : segundos da posição desejada. Abaixo segue a solução para nosso problema:

ffmpeg -vframes 1 -ss 01:30:20 -i foo.avi -r 1 -s 800×600 -f image2 snapshot-%03d.jpeg

Para certificarmos que iremos extrair exatamente o frame que desejamos o valor do vframes pode ser alterado para capturar alguns frames seguintes, por segurança.

Veja o restante do tópico: Extraindo imagens de um vídeo – parte I, pelo link:
https://rafaelbiriba.com/?p=53

Share

FFmpeg: Extraindo imagens de um vídeo ( Snapshot )

FFmpeg: http://www.ffmpeg.org/
FFmpeg: http://www.ffmpeg.org/

Utilizando o seguinte comando:

ffmpeg -i foo.avi -r 1 -s 800×600 -f image2 snapshot%03d.jpeg

Onde:

foo.avi > Vídeo de entrada, podendo ser .avi, .mpeg, .mov, ou qualquer outra extensão suportada pelo FFmpeg.
-r 1 > frame rate ( 1 frame por segundo )
– s 800×600 > Dimensão desejada da imagem final. Caso o valor seja maior que o vídeo de entrada, será acrescentado bordas pretas na imagem.
-f image2 > Força o formato de imagem de saída para imagem. Deve ser seguido pelo nome do arquivo desejado.jpeg
snapshot03%d.jpeg > Snapshot- é o nome do arquivo desejado. 03%d é a numeração de 3 digitos iniciando em zero. Sendo assim 04%d para 4 digitos e assim por diante, seguido pela extenção .jpeg , ou .png, .bmp ou até mesmo .tiff


Opções Adicionais:

• Sabendo que as snapshots são extraídas por segundo, então ajustando o parametro -r é possível definir de quantos em quantos frames deve-se extrair uma imagem.

• Acrescentando o parametro: -itsoffset -4 as imagens começam a ser extraídas 4 segundos depois do inicio do vídeo. Exemplo utilizando um delay de 10 segundos:
ffmpeg -itsoffset -10 -i foo.avi -r 1 -s 800×600 -f image2 snapshot-%03d.jpeg

• Parametro -s ( tamanho do frame ):
Ao invés de especificar o tamanho, é possível utilizar uma das abreviações a seguir:
sqcif = 128×96
qcif = 176×144
cif = 352×288
4cif = 704×576
qqvga = 160×120
qvga = 320×240
vga = 640×480
svga = 800×600
xga = 1024×768
uxga = 1600×1200
qxga = 2048×1536
sxga = 1280×1024
qsxga = 2560×2048
hsxga  = 5120×4096
wvga = 852×480
wxga = 1366×768
wsxga = 1600×1024
wuxga = 1920×1200
woxga = 2560×1600
wqsxga = 3200×2048
wquxga = 3840×2400
whsxga = 6400×4096
whuxga = 7680×4800
cga = 320×200
ega = 640×350
hd480 = 852×480
hd720 = 1280×720
hd1080 = 1920×1080

Exemplo:
ffmpeg -i foo.avi -r 1 -s hd1080 -f image2 snapshot-%03d.jpeg

• Parametros para CROP ( corte de imagem )
Para “cropar” um vídeo, o parametro de crop deve estar localizado antes do parametro -s ( tamanho do frame )
-croptop 100 = Define o corte no topo em 100 pixels
-cropbottom 250 = Define o corte no rodapé de 250 pixels
-cropleft 30 = Define o corte da lateral esquerda de 30 pixels
-cropright 25 = Define o corte da lateral direita de 25 pixels
* Valores em pixels ilustrativos, devendo ser usados conforme sua necessidade. Não é necessário utilizar todos os parametros para fazer um crop.
Exemplo:
ffmpeg -i foo.avi -croptop 250 -cropright 25 -r 1 -s hd1080 -f image2 snapshot-%03d.jpeg
Onde é feito o crop do topo e da lateral direita.

Espero ter ajudado a todos… =)

Share