🎬 第六章 音视频压缩编码基础
📄 一句话概括

有损压缩的本质是在猜你注意不到什么——猜得准,码率就低;猜错了,就会出现可见的失真。

📝 本节和前面几节的关系

6.2.1 讲了无损,这一节讲另一条路:允许丢。

一、有损压缩做什么

有损压缩的定义是:解压后的数据与原始数据不同,但【在感知上】可以接受。 所以它多了一类可以利用的冗余:感知冗余——人眼人耳感知不到的部分。 这就把天花板从 2 倍一下抬到了几百倍。

二、它到底在丢什么

高频细节——人眼对细节不敏感,平滑区域的微小纹理可以抹掉。 色度精度——前面 5.1.2 讲过,色度可以只采四分之一。 强音附近的弱音——听觉掩蔽效应,听不见就直接不存。 快速运动中的清晰度——看不清的地方,没必要存那么细。

三、【猜】这个字很关键

有损压缩的所有手段,本质都是基于感知模型的判断:这一段重不重要。 判断准了,人耳人眼完全分辨不出,码率却降了一个数量级。 判断错了(比如画面变化剧烈、模型不适合),就会出现块效应、色彩断层、金属音。 所以【有损的质量】不是由压缩算法决定的,是由感知模型与内容的匹配程度决定的。

四、什么时候可以用有损

判据只有一条:这份数据还要不要再加工。 只用于观看与传输 → 可以用有损,而且应该用。 还要反复编辑或作为素材 → 必须用无损。 所以录音棚存 24 bit WAV、发布用 AAC,这不是保守,是流程必需。

五、动手 Demo:有损压缩在【丢】什么

有损压缩的依据是:人眼人耳有很多【看不见听不见】的余量。

rows = [("高频细节", "人眼对细节不敏感", "量化、低通"),
        ("色度精度", "人眼对色度不敏感", "色度降采样"),
        ("强音附近的弱音", "听觉掩蔽效应", "感知编码"),
        ("快速运动中的清晰度", "看不清就没必要存", "量化放松")]
for a, b, c in rows:
    print("%-18s %-20s %s" % (a, b, c))

实跑输出:

--------------------------------------------------------------------
有损压缩在【丢】什么
--------------------------------------------------------------------

有损压缩的依据是:人眼人耳有很多【看不见听不见】的余量。

  丢什么                 依据                 手段
  -------------------------------------------------------
  高频细节               人眼对细节不敏感     量化、低通
  色度精度               人眼对色度不敏感     色度降采样
  强音附近的弱音         听觉掩蔽效应         感知编码
  快速运动中的清晰度     看不清就没必要存     量化放松

  换个角度看:**有损压缩其实是在【猜你注意不到什么】。**
  猜得准,码率就低;猜错了,就会出现可见的失真。

换个角度看:有损压缩其实是在【猜你注意不到什么】。 猜得准,码率就低;猜错了,就会出现可见的失真。

30 秒实验

  1. 把同一段音乐压成两个低码率文件(如 32 kbps 与 96 kbps),戴耳机对比。
  2. 找出你能听出区别的那个门槛。

常见误区

  1. 以为有损就是【糊】。做得好的有损,人耳分辨不出。
  2. 对有损文件反复转码。每转一次就损一次,误差会累积。
自测三问(点开对答案) 1. 有损压缩多利用的是哪一类冗余? —— 感知冗余——人眼人耳感知不到的部分。 2. 有损压缩通常在丢哪四类东西? —— 高频细节、色度精度、被掩蔽的弱音、快速运动中的清晰度。 3. 什么时候必须用无损? —— 数据还要反复编辑加工、或作为存档母版时。

相关笔记