【问题标题】:What are default quantization tables for RTP/MJPEG stream?RTP/MJPEG 流的默认量化表是什么?
【发布时间】:2014-04-16 21:46:16
【问题描述】:

我在从 ip-camera 解码 RTP/MJPEG 流时遇到问题。

正如 rfc2435 所述,量化表(对于 Q 值 1

/*
* Table K.1 from JPEG spec.
*/
static const int jpeg_luma_quantizer[64] = {
    16, 11, 10, 16, 24, 40, 51, 61,
    12, 12, 14, 19, 26, 58, 60, 55,
    14, 13, 16, 24, 40, 57, 69, 56,
    14, 17, 22, 29, 51, 87, 80, 62,
    18, 22, 37, 56, 68, 109, 103, 77,
    24, 35, 55, 64, 81, 104, 113, 92,
    49, 64, 78, 87, 103, 121, 120, 101,
    72, 92, 95, 98, 112, 100, 103, 99
};

/*
 * Table K.2 from JPEG spec.
 */
static const int jpeg_chroma_quantizer[64] = {
    17, 18, 24, 47, 99, 99, 99, 99,
    18, 21, 26, 66, 99, 99, 99, 99,
    24, 26, 56, 99, 99, 99, 99, 99,
    47, 66, 99, 99, 99, 99, 99, 99,
    99, 99, 99, 99, 99, 99, 99, 99,
    99, 99, 99, 99, 99, 99, 99, 99,
    99, 99, 99, 99, 99, 99, 99, 99,
    99, 99, 99, 99, 99, 99, 99, 99
};

这种算法导致图片质量很差(vlc 显示更好)。我查看了 ffmpeg 源代码,发现了类似的算法,但表不同:

static const uint8_t default_quantizers[128] = {
    /* luma table */
    16,  11,  12,  14,  12,  10,  16,  14,
    13,  14,  18,  17,  16,  19,  24,  40,
    26,  24,  22,  22,  24,  49,  35,  37,
    29,  40,  58,  51,  61,  60,  57,  51,
    56,  55,  64,  72,  92,  78,  64,  68,
    87,  69,  55,  56,  80,  109, 81,  87,
    95,  98,  103, 104, 103, 62,  77,  113,
    121, 112, 100, 120, 92,  101, 103, 99,

    /* chroma table */
    17,  18,  18,  24,  21,  24,  47,  26,
    26,  47,  99,  66,  56,  66,  99,  99,
    99,  99,  99,  99,  99,  99,  99,  99,
    99,  99,  99,  99,  99,  99,  99,  99,
    99,  99,  99,  99,  99,  99,  99,  99,
    99,  99,  99,  99,  99,  99,  99,  99,
    99,  99,  99,  99,  99,  99,  99,  99,
    99,  99,  99,  99,  99,  99,  99,  99
};

我已将表格更改为 ffmpeg 表格,现在图片看起来很完美。 那么,为什么这些表与 rfc2435 不同呢?我错过了什么?

【问题讨论】:

  • Rfc2435 现在有勘误表,指示在 q

标签: ffmpeg video-streaming jpeg rtp mjpeg


【解决方案1】:

不同的表格更适合不同的内容。随着时间的推移,还会发现更好的桌子。找到最佳表格实际上是使用人工评判质量的反复试验,然后权衡您希望优化的内容类型。 ffmpeg 也可能产生更大的文件。在最初编写 jpeg 规范时,可能无法接受较大的文件。

【讨论】:

  • 问题是在 RTP/MJPEG 流中(对于 Q 值 1
  • 我不知道为什么会这样。我对 JPEG 的知识已经接近极限了。对不起,祝你好运! ——
【解决方案2】:

默认值是预先计算的,但您也可以包含自己的 Q=100, 看我的实现@https://net7mma.codeplex.com/SourceControl/latest#Rtp/RFC2435Frame.cs

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 2013-05-19
    • 2011-10-16
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多