Attualmente sto usando questo comando per estrarre le immagini:
ffmpeg.exe -i 10fps.h264 -r 10 -f immagine2 10fps.h264_% 03d.jpeg
Ma come posso migliorare la qualità dell'immagine JPEG?
Attualmente sto usando questo comando per estrarre le immagini:
ffmpeg.exe -i 10fps.h264 -r 10 -f immagine2 10fps.h264_% 03d.jpeg
Ma come posso migliorare la qualità dell'immagine JPEG?
Risposte:
-qscale:v
Usa -qscale:v
(o l'alias-q:v
) come opzione di output. La gamma effettiva per JPEG è 2-31 con 31 è la qualità peggiore. Consiglio di provare valori di 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
Funzionerà con qualsiasi ingresso video. Vedi sotto se il tuo input è MJPEG.
Se il tuo input è MJPEG (Motion JPEG), le immagini possono essere estratte senza alcuna perdita di qualità.
L' output della console ffmpeg
o ffprobe
può dirti se il tuo input è MJPEG:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg
Quindi puoi estrarre i frame usando il mjpeg2jpeg
filtro bitstream :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1
oltre al -q:v 1
raddoppio della dimensione del file. E mi sembra di vedere anche un leggerissimo miglioramento.
-qmin 1 -qmax 1
prodotto un file più grande, ma mi dà esattamente la stessa immagine. L'ho convalidato tramite Photoshop, 2 livelli e filtro di differenza. I pixel sono gli stessi.
-qmin 1 -q:v 1
.
Produci le immagini in un formato senza perdita di dati come PNG:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png
Quindi usa un altro programma (dove puoi specificare più precisamente la qualità, il sottocampionamento e il metodo DCT, ad esempio GIMP) per convertire i PNG che desideri in JPEG.
In questo modo è possibile ottenere immagini leggermente più nitide in formato JPEG rispetto a quanto è possibile con l' -qmin 1 -q:v 1
output come JPEG direttamente da ffmpeg
.
ffmpeg
produce PNG8
file che utilizzano solo 256 colori (come GIF). quindi è in realtà molto lossy.
ffmpeg
comando ], ottengo png di alta qualità che sono della stessa qualità del video originale." Quale versione di ffmpeg
stai utilizzando per l'output di PNG8
file e qual è il tuo formato di input?
identify image.png
dà il risultato "8 bit" quando in realtà non è realmente un singolo canale a 8 bit, ma 8 bit per R, G e B. IDK come identify
dovrebbe capire l' utente medio quel tho.