149 votes

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

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

ffmpeg -i input.mp4 output_%03d.jpeg

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

1 votes

Qu'est-ce qui ne va pas avec la qualité actuelle, à part le fait qu'elle n'est pas "bonne" ?

289voto

LordNeckbeard Points 9321

Utilisez -qscale:v pour contrôler la qualité

Utilisez -qscale:v (ou l'alias -q:v ) comme option de sortie.

  • La plage normale pour le JPEG est de 2-31, 31 étant la pire qualité.
  • L'échelle est linéaire, le double de l'échelle qscale correspondant à environ la moitié du débit binaire.
  • Recommandez d'essayer des valeurs de 2 à 5.
  • Vous pouvez utiliser une valeur de 1 mais vous devez ajouter l'élément -qmin 1 option de sortie (car la valeur par défaut est -qmin 2 ).

Pour produire une série d'images :

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

Voir le documentation sur le muxer d'images pour plus d'options concernant les sorties d'images.

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

Pour écraser/mettre à jour/enregistrer en continu sur une seule image

Utilisez -update 1 multiplexeur d'images option. Exemple pour une fois par seconde à partir d'une entrée de streaming en direct :

ffmpeg -i rtmp://input.foo -q:v 4 -r 1 -update 1 output.jpg

Voir aussi

12voto

user2511031 Points 41

Produisez les images dans un format sans perte tel que le PNG :

mkdir stills
ffmpeg -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png

Utilisez ensuite un autre programme (où vous pouvez spécifier plus précisément la qualité, le sous-échantillonnage et la méthode DCT - par exemple GIMP) pour convertir les PNGs que vous voulez en JPEG.

Il est possible d'obtenir des images légèrement plus nettes au format JPEG de cette manière que ce qui est possible avec l'option -qmin 1 -q:v 1 et la sortie en JPEG directement à partir de ffmpeg .

Si vous voulez extraire uniquement les images clés (qui sont susceptibles d'être de meilleure qualité après montage), vous pouvez utiliser quelque chose comme ceci :

ffmpeg -skip_frame nokey -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png

El -vsync 0 permet d'éviter de devoir spécifier la fréquence d'images avec -r et signifie que tous les cadres du fichier d'entrée sont traités comme, hum, un cadre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X