代码之家  ›  专栏  ›  技术社区  ›  anubhava

MPEG4压缩是如何工作的?

  •  20
  • anubhava  · 技术社区  · 17 年前

    4 回复  |  直到 16 年前
        1
  •  38
  •   Lehane    17 年前

    MPEG-4是一个庞大的标准,它采用了许多技术来实现其所能达到的高压缩率。

    一般来说,视频压缩涉及丢弃尽可能多的信息,同时对最终用户的观看体验产生最小的影响。例如,使用子采样YUV而不是RGB可以直接将视频大小减半。这是可能的,因为人眼对颜色的敏感度低于对亮度的敏感度。在YUV中,Y值是亮度,U和V值表示颜色。因此,您可以丢弃一些颜色信息,从而减小文件大小,而观众不会注意到任何差异。

    在那之后,大多数压缩技术特别利用了2个冗余。第一种是时间冗余,第二种是空间冗余。

    时间冗余指出,视频序列中的连续帧非常相似。通常,视频的帧率约为每秒20-30帧,在1/30秒内没有太大变化。取下任何一张DVD并暂停,然后将其移动到一帧上,注意两张图像有多相似。因此,MPEG-4(和其他压缩标准)只对连续帧之间的差异进行编码(使用 motion estimation

    空间冗余利用了这样一个事实,即一般来说,图像上的颜色分布往往频率很低。我的意思是,相邻像素往往具有相似的颜色。例如,在你穿着红色套头衫的图像中,所有代表你的套头衫像素的颜色都非常相似。可以使用DCT将像素值转换到频率空间,在那里可以丢弃一些高频信息。然后,当执行反向DCT时(在解码期间),图像现在没有丢弃的高频信息。

    要查看丢弃高频信息的效果,请打开MS油漆并绘制一系列重叠的水平和垂直黑线。将图像另存为JPEG(也使用DCT进行压缩)。现在放大图案,注意线条的边缘不再那么清晰,有点模糊。这是因为在压缩过程中,一些高频信息(从黑色到白色的过渡)被丢弃了。 Read this for an explanation with nice pictures

    this book 虽然数学有点重,但相当不错。

        2
  •  4
  •   greyfade    17 年前

    与任何其他流行的视频编解码器一样,MPEG4使用 discrete cosine transform 以及各种运动补偿技术(如果有帮助,可以将其视为运动预测),可以减少后续帧所需的数据量。 This page 概述了普通MPEG4的功能。

    它与JPEG使用的技术并没有完全不同。

        3
  •  1
  •   Michael Logothetis    17 年前

    MPEG4使用各种技术来压缩视频。

    如果你还没有看过维基百科,这将是一个很好的选择 starting point .

    还有这篇文章来自 IEEE 这更详细地解释了这些技术。

        4
  •  1
  •   Jim    14 年前

    推荐文章
    ilciavo  ·  ffmpeg PNG到mp4-黑屏
    11 年前