Bạn có thể thử xuất thành PPM và sử dụng một số công cụ khác để chuyển đổi thành JPEG.
Tôi đã xem xét ffmpeg / libavcodec / mjpeg.c. Tôi tin rằng chất lượng được đặt thành một giá trị cố định.
Ngoài ra, bạn dường như chuyển đổi video MJPEG thành khung hình tĩnh. Tôi nghĩ trong trường hợp này, mã trong ffmpeg / libavcodec / mjpeg2jpeg_bsf.c chạy và dữ liệu không được mã hóa lại. Vì vậy, chất lượng hình ảnh sẽ không cải thiện.
Đây là định nghĩa bảng lượng tử hóa, tôi không thấy bất kỳ tham chiếu nào đến * val_? C nơi các giá trị được thu nhỏ trước khi sử dụng.
/* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
/* IMPORTANT: these are only valid for 8-bit data precision! */
const uint8_t ff_mjpeg_bits_dc_luminance[17] =
{ /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
const uint8_t ff_mjpeg_val_dc[12] =
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
const uint8_t ff_mjpeg_bits_dc_chrominance[17] =
{ /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
const uint8_t ff_mjpeg_bits_ac_luminance[17] =
{ /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
const uint8_t ff_mjpeg_val_ac_luminance[] =
{ 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
-c:v copy -bsf:v mjpeg2jpeg
thay vìq:v 1
.