Eu tenho uma webcam e quero despejar um quadro uma vez por segundo no disco. Um comando como esse funciona bem para soltar 5 quadros por segundo no disco:
./ffmpeg -y -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -c:v copy -bsf:v mjpeg2jpeg images/frame_%d.jpg
Mas 5 FPS são tão baixos quanto minha webcam pode ir. Definir qualquer valor inferior e apenas corrige de volta para 5 FPS. Eu não consegui descobrir como obter efetivamente 1 FPS disso. Parecia que talvez o filtro de vídeo selecionado fosse um bom candidato. Mas eu coloquei em várias posições da linha de comando sem sucesso.
./ffmpeg -y -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -c:v copy -bsf:v mjpeg2jpeg -vf select='not(mod(n\,5))' images/frame_%d.jpg
./ffmpeg -y -vf select='not(mod(n\,5))' -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -c:v copy -bsf:v mjpeg2jpeg images/frame_%d.jpg
./ffmpeg -y -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -vf select='not(mod(n\,5))' -c:v copy -bsf:v mjpeg2jpeg images/frame_%d.jpg
Alguém sabe como posso obter 1 FPS de uma webcam usando o ffmpeg? Esta questão é semelhante a Extraindo "um de cada 10 quadros" em um vídeo usando VLC ou FFmpeg , mas eu simplesmente não consigo fazer o filtro de seleção funcionar e acho que é por ser uma fonte ao vivo.
Tags ffmpeg