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:vSử 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 ffmpeghoặc ffprobebả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 mjpeg2jpegbộ lọc dòng bit :
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1ngoài việc -q:v 1tă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 1dẫ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 1và xuất ra dưới dạng JPEG trực tiếp từ đó ffmpeg.
ffmpegxuất ra PNG8cá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.
ffmpeglệ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 PNG8tệ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, identifyngười dùng bình thường phải hiểu như thế nào mà tho.