Answers:
这就是为我做花招的结果:
ffmpeg -i http://xx.xx/mjpg/video.mjpg -q:v 1 %05d.jpg
该-q:v 1
是一张门票。它设置视频编码器的质量,即-q
均值质量和:v
均值视频。值的范围是1到31,值越低越好。
q
。例如,这里是24.8frame= 64 fps=5.0 q=24.8 Lsize=N/A time=00:00:16.00 bitrate=N/A dup=10 drop=299 speed=1.25x
$ ffmpeg -r 1/4 -i %03d.jpg -b 5000 -vcodec mjpeg -qscale 1 5000.avi
要么
$ ffmpeg -r 1/4 -i %03d.jpg -vcodec copy -qscale 1 copy.avi
参考:
r delay between next jpg, results 4 second
b bitrate
vcodec use jpeg encode
qscale quality ratio
您可以尝试导出到PPM并使用其他工具将其转换为JPEG。
我调查了ffmpeg / libavcodec / mjpeg.c。我相信质量是固定的。
另外,您似乎也可以将MJPEG视频转换为JPEG静止帧。我认为在这种情况下,ffmpeg / libavcodec / mjpeg2jpeg_bsf.c中的代码可以运行,并且数据不会被重新编码。因此,无论如何图像质量都不会提高。
这是量化表的定义,我没有看到对* val_?c的任何引用,在此之前对值进行了缩放。
/* 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,
-vcodec ppm
需要导出ppm
-c:v copy -bsf:v mjpeg2jpeg
而不是q:v 1
。