Obecnie używam tego polecenia, aby wyodrębnić obrazy:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Ale jak mogę poprawić jakość obrazu JPEG?
Obecnie używam tego polecenia, aby wyodrębnić obrazy:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Ale jak mogę poprawić jakość obrazu JPEG?
Odpowiedzi:
-qscale:v
Użyj -qscale:v
(lub aliasu -q:v
) jako opcji wyjściowej. Efektywny zakres dla JPEG to 2-31, przy czym 31 to najgorsza jakość. Zalecam wypróbowanie wartości 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
Działa to z każdym wejściem wideo. Zobacz poniżej, czy dane wejściowe to MJPEG.
Jeśli wejście to MJPEG (Motion JPEG), obrazy można wyodrębnić bez utraty jakości.
Wynik konsoli ffmpeg
lub ffprobe
może powiedzieć, czy dane wejściowe to MJPEG:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg
Następnie możesz wyodrębnić ramki za pomocą mjpeg2jpeg
filtru strumienia bitów :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1
oprócz -q:v 1
podwoił rozmiar pliku. Wydaje się, że widzę również niewielką poprawę.
-qmin 1 -qmax 1
zaowocowało większym plikiem, ale daje mi dokładnie ten sam obraz. Sprawdziłem to za pomocą Photoshopa, 2 warstw i filtra różnicowego. Piksele są takie same.
-qmin 1 -q:v 1
.
Wysyłaj obrazy w bezstratnym formacie, takim jak PNG:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png
Następnie użyj innego programu (w którym możesz dokładniej określić jakość, podpróbkowanie i metodę DCT - np. GIMP), aby przekonwertować pliki PNG, które chcesz, na JPEG.
W ten sposób można uzyskać nieco ostrzejsze obrazy w formacie JPEG, niż jest to możliwe w przypadku -qmin 1 -q:v 1
bezpośredniego przesyłania w formacie JPEG ffmpeg
.
ffmpeg
wyświetla PNG8
pliki, które używają tylko 256 kolorów (tak samo jak GIF). więc w rzeczywistości jest bardzo stratna.
ffmpeg
polecenia [ ] otrzymam pliki PNG o wysokiej jakości, które są identycznej jakości z oryginalnym wideo”. Jakiej wersji ffmpeg
używasz, która generuje PNG8
pliki i jaki jest twój format wejściowy?
identify image.png
wynik był „8-bitowy”, podczas gdy w rzeczywistości nie jest to tak naprawdę pojedynczy kanał 8-bitowy, ale 8-bitowy dla R, G i B. IDK, jak przeciętny identify
użytkownik powinien zrozumieć że mimo.