wake-up-neo.net

Wie kann ich mit ffmpeg ein JPEG-Bild in guter Qualität aus einer H264-Videodatei extrahieren?

Derzeit verwende ich diesen Befehl, um die Bilder zu extrahieren:

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

Aber wie kann ich die JPEG-Bildqualität verbessern?

86
Daniel Gartmann

Verwenden -qscale:v

Verwenden -qscale:v (oder der Alias ​​-q:v) als Ausgabeoption. Der effektive Bereich für JPEG ist 2-31, wobei 31 die schlechteste Qualität ist. Ich empfehle Werte von 2-5 auszuprobieren.

So geben Sie eine Reihe von Bildern aus:

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

So geben Sie ein einzelnes Bild mit einer Dauer von ~ 60 Sekunden aus:

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

Dies funktioniert mit jedem Videoeingang. Siehe unten, wenn Ihre Eingabe MJPEG ist.


MJPEG

Wenn Sie MJPEG (Motion JPEG) eingeben, können die Bilder ohne Qualitätsverlust extrahiert werden.

Die Konsolenausgabe ffmpeg oder ffprobe kann Ihnen mitteilen, ob Ihre Eingabe MJPEG ist:

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

Dann können Sie die Frames mit mjpeg2jpeg Bitstream Filter :

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

Siehe auch

174
llogan