Hiện tại tôi đang sử dụng lệnh này để trích xuất hình ảnh:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Nhưng làm cách nào để cải thiện chất lượng hình ảnh JPEG?
Hiện tại tôi đang sử dụng lệnh này để trích xuất hình ảnh:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_% 03d.jpeg
Nhưng làm cách nào để cải thiện chất lượng hình ảnh JPEG?
Câu trả lời:
-qscale:v
Sử dụng -qscale:v
(hoặc bí danh -q:v
) làm tùy chọn đầu ra. Phạm vi hiệu quả cho JPEG là 2-31 với 31 là chất lượng kém nhất. Tôi khuyên bạn nên thử các giá trị từ 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
Điều này sẽ hoạt động với bất kỳ đầu vào video nào. Xem bên dưới nếu đầu vào của bạn là MJPEG.
Nếu đầu vào của bạn là MJPEG (Motion JPEG) thì hình ảnh có thể được trích xuất mà không làm giảm chất lượng.
Đầu ra ffmpeg
hoặc ffprobe
bảng điều khiển có thể cho bạn biết đầu vào của bạn có phải là MJPEG hay không:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg
Sau đó, bạn có thể trích xuất các khung bằng mjpeg2jpeg
bộ lọc dòng bit :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1
ngoài việc -q:v 1
tăng gấp đôi kích thước tệp. Và tôi dường như cũng có thể thấy một sự cải thiện rất nhỏ.
-qmin 1 -qmax 1
dẫn đến tệp lớn hơn, nhưng cung cấp cho tôi một hình ảnh chính xác. Tôi đã xác nhận điều này thông qua photoshop, 2 lớp và bộ lọc khác biệt. Các điểm ảnh giống nhau.
-qmin 1 -q:v 1
.
Xuất hình ảnh ở định dạng không mất dữ liệu, chẳng hạn như PNG:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png
Sau đó, sử dụng một chương trình khác (nơi bạn có thể chỉ định chính xác hơn chất lượng, lấy mẫu con và phương pháp DCT - ví dụ: GIMP) để chuyển đổi các PNG bạn muốn sang JPEG.
Theo cách này, có thể thu được hình ảnh sắc nét hơn một chút ở định dạng JPEG so với cách có thể -qmin 1 -q:v 1
và xuất ra dưới dạng JPEG trực tiếp từ đó ffmpeg
.
ffmpeg
xuất ra PNG8
các tệp chỉ sử dụng 256 màu (giống như GIF). vì vậy nó thực sự rất mất mát.
ffmpeg
lệnh [ ] này, tôi sẽ nhận được png chất lượng cao có chất lượng giống với video gốc." Bạn ffmpeg
đang sử dụng phiên bản nào để xuất PNG8
tệp ra và định dạng đầu vào của bạn là gì?
identify image.png
đưa ra kết quả "8-bit" trong khi thực sự nó không thực sự là 8-bit kênh đơn, mà là 8-bit cho R, G và B. IDK, identify
người dùng bình thường phải hiểu như thế nào mà tho.