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é d'image JPEG?
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é d'image JPEG?
Réponses:
-qscale:v
Utilisez -qscale:v
(ou l'alias -q:v
) comme option de sortie. La plage effective pour JPEG est de 2 à 31, 31 étant la plus mauvaise qualité. Je recommande d'essayer des valeurs de 2 à 5.
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
Cela fonctionnera avec n'importe quelle entrée vidéo. Voyez ci-dessous si votre entrée est MJPEG.
Si votre entrée est MJPEG (Motion JPEG), les images peuvent être extraites sans aucune perte de qualité.
La sortie de la console ffmpeg
ou ffprobe
peut vous dire 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 trames à l'aide du mjpeg2jpeg
filtre de flux binaire :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1
en plus a -q:v 1
doublé la taille du fichier. Et je peux sembler voir une très légère amélioration également.
-qmin 1 -qmax 1
un fichier plus volumineux, mais me donne exactement la même image. J'ai validé cela via photoshop, 2 couches et filtre de différence. Les pixels sont les mêmes.
-qmin 1 -q:v 1
.
Sortez les images dans un format sans perte tel que PNG:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png
Ensuite, utilisez 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 PNG 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 -qmin 1 -q:v 1
et de sortir directement au format JPEG à partir de ffmpeg
.
ffmpeg
génère des PNG8
fichiers qui n'utilisent que 256 couleurs (comme GIF). donc c'est en fait très perdant.
ffmpeg
commande [ ], j'obtiens des png de haute qualité qui sont de qualité identique à la vidéo originale." Quelle version de ffmpeg
utilisez-vous pour générer des PNG8
fichiers et quel est votre format d'entrée?
identify image.png
donne un résultat "8 bits" alors qu'en fait ce n'est pas vraiment un canal unique de 8 bits, mais 8 bits pour R, G et B. IDK comment l' identify
utilisateur moyen est censé comprendre que tho.