web-dev-qa-db-fra.com

Comment puis-je extraire une image JPEG de bonne qualité d'un fichier vidéo H264 avec ffmpeg?

Actuellement, j'utilise cette commande pour extraire les images:

ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg

Mais comment puis-je améliorer la qualité de l'image JPEG?

86
Daniel Gartmann

Utilisation -qscale:v

Utilisation -qscale:v _ (ou l'alias -q:v) en tant qu'option de sortie. La plage efficace pour JPEG est comprise entre 2 et 31, 31 étant la pire qualité. Je recommande d'essayer les valeurs de 2-5.

Pour sortir une série d’images:

ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg

Pour produire une seule image d’une durée d’environ 60 secondes:

ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg

Cela fonctionnera avec n'importe quelle entrée vidéo. Voir ci-dessous si votre entrée est MJPEG.


MJPEG

Si vous saisissez MJPEG (Motion JPEG), les images peuvent être extraites sans perte de qualité.

La sortie de la console ffmpeg ou ffprobe peut vous indiquer si votre entrée est MJPEG:

$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg

Ensuite, vous pouvez extraire les cadres en utilisant le mjpeg2jpeg filtre de flux binaire :

$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg

Regarde aussi

174
llogan