提高ffmpeg创建的jpg的质量


29

我正在使用ffmpeg从IP摄像机获取mjpeg提要,并将其转换为一系列静止的jpeg图像。这是我正在使用的命令:

ffmpeg -i http://xxx:xxx@xx.xx.xx.xx/vid.mjpg -f image2 -vcodec mjpeg %05d.jpg

有谁知道使用ffmpeg创建静止图像时指定jpg压缩级别的方法?

Answers:


36

这就是为我做花招的结果:

ffmpeg -i http://xx.xx/mjpg/video.mjpg -q:v 1 %05d.jpg

-q:v 1是一张门票。它设置视频编码器的质量,即-q均值质量和:v均值视频。值的范围是1到31,值越低越好。


2
我不知道这是否在几年前可用,但是如果您要从MJPEG修改原始JPEG图像,答案就在这里:ffmpeg.org/ffmpeg-bitstream-filters.html#mjpeg2jpeg ----简而言之:-c:v copy -bsf:v mjpeg2jpeg而不是q:v 1
juanitogan

1
有人知道它使用什么默认值吗?
杰伊·雷恩

@ JayR.Wren我做了一些测试,就我而言,它似乎开始时很低(好),几秒钟后上升到24.8(不好)。我不知道为什么 ffmpegs将当前质量显示为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
专员

6

$ 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

我想知道qscale是否与比特率说明符“竞争”?
rogerdpack

1
这不是要问的对立面吗?这看起来像jpeg到mjpeg。mjpeg到jpeg是要问的。
juanitogan

4

您可以尝试导出到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,

我不熟悉PPM,那是什么?
weotch

而且,与我创建的jpgs相比,当我从浏览器访问相机时,图像看起来更好。这就是为什么我认为正在发生一些压缩。
weotch

PPM是人们可以想象的最简单的彩色图像格式。它只是一个标头,例如“ P6 640 480 255 \ n”,然后是原始数据。我只是看了一下。也许它实际上无法输出此格式。然后,唯一的其他选项是-vc rawvideo。您尝试过-quality吗?

1
-vcodec ppm需要导出ppm
停止危害莫妮卡(Monica)2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.