4

即时通讯音视频开发(三):视频编解码之编码基础

 2 years ago
source link: http://yunxin.163.com/blog/zhuan-im3-3/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙。原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的。
本文主要讲解实时音视频技术中视频技术的编码理论知识。

1. 如何理解压缩码流?

可按2部分进行理解:

  • 语法:码流中各个元素的位置关系。
    如:01001001…,表示图像编码类型(01),宏块类型(00),编码系数1001等。
  • 语义:每个语法元素所表达的意义。
    例如:图像编码类型。

即时通讯音视频开发(三):视频编解码之编码基础_1.png

2. 编码层次的组成

编码层次由如下部分组成:

  • 序列(Sequence)
  • 图像组(Group of Pictures,GOP)
  • 图像(Picture)
  • 条带(Slice)
  • 宏块(Macroblock,MB)
  • 块(Block)

3. 具体的码流结构

即时通讯音视频开发(三):视频编解码之编码基础_2.png

4. PB帧编码

即时通讯音视频开发(三):视频编解码之编码基础_3.png

5. IBBP序列编码对象

  • 序列是指一段连续编码的并具有相同参数的视频图像。
  • 序列起始码是指专有的一段比特串,标识一个序列的压缩数据的开始。如MPEG-2的序列起始码为十六进制数000001(B3)。
  • 序列头是指记录序列信息,包含档次(Profile),级别(Level),宽度,高度,是否是逐行序列,帧率等内容。
  • 序列结束码是指专有的一段比特串,标识该序列的压缩数据的结束。如MPEG-2的序列结束码为十六进制数000001(B7)。

6. 图像组编码对象

即时通讯音视频开发(三):视频编解码之编码基础_5.png

7. 图像编码结构

包括:

  • 图像起始码:专有的一段比特串,标识一个图像的压缩数据的开始。
    如MPEG-2的图像起始码为十六进制数000001(00)。
  • 图像头:记录图像信息。
    包含图像编码类型,图像距离,图像编码结构,图像是否为逐行扫描。

8. 图像分块编码

即时通讯音视频开发(三):视频编解码之编码基础_6.png

9. 条带编码结构

  • 条带:多个宏块的组合。
  • 条带起始码:专有的一段比特串,标识一个条带的压缩数据的开始。如MPEG-2的条带起始码为十六进制数000001(0~AF)。
  • 条带头:记录当前图像的相关信息。含条带位置,条带量化参数,宏块编码技术标识等。

10. 条带编码对象

即时通讯音视频开发(三):视频编解码之编码基础_7.png

11. 宏块编码结构

  • 宏块:16×16的像素块(对亮度而言)。
  • 宏块内容:宏块编码类型,编码模式,参考帧索引,运动矢量信息,宏块编码系数等。

12. 宏块编码对象

即时通讯音视频开发(三):视频编解码之编码基础_8.png

13. 块编码结构

  • 8×8或4×4块的变换量化系数的熵编码数据。
  • CBP (Coded Block Patten):用来指示块的变换量化系数是否全为零。
    对于YUV(4:2:0)编码,CBP通常6比特长,每个比特对应一个块,当某一块的变换量化系数全为零时,其对应比特位值为0,否则为1。
  • 每个块的变换量化系数的最后用一个EOB (End of Block)符号来标识。

14. 视频编解码关键技术

  • 预测:通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余。
  • 变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余。
  • 量化:通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼不敏感的信息来降低编码数据量。
  • 扫描:将二维变换量化数据重新组织成一维的数据序列。
  • 熵编码:根据待编码数据的概率特性减少编码冗余。

即时通讯音视频开发(三):视频编解码之编码基础_9.png

15. 预测

空间预测:利用图像空间相邻像素的相关性来预测的方法

  • 帧内预测技术:利用当前编码块周围已经重构出来的像素预测当前块
  • Intra图像编码(I帧)

时间预测:利用时间上相邻图像的相关性来预测的方法

  • 帧间预测:运动估计(Motion Estimation,ME),运动补偿(Motion Compensation,MC)
  • Inter图像编码:前向预测编码图像(P帧),双向预测编码图像(B帧)

16. 帧内预测

  • I帧图像的每个宏块都采用帧内(Intra)预测编码模式。
  • 宏块分成8×8或者4×4块,对每个块采用帧内预测编码,称作Intra8x8或者Intra4x4。
  • 帧内预测有多个预测方向:水平,垂直,左下,右上。
  • 帧内预测还有直流(DC)预测。
  • 色度块预测还有平面预测。

即时通讯音视频开发(三):视频编解码之编码基础_10.png

17. 量化

1量化原理

将含有大量的数据集合映射到含有少量的数据集合中。

即时通讯音视频开发(三):视频编解码之编码基础_11.png

即时通讯音视频开发(三):视频编解码之编码基础_12.png

即时通讯音视频开发(三):视频编解码之编码基础_13.png

即时通讯音视频开发(三):视频编解码之编码基础_14.png

即时通讯音视频开发(三):视频编解码之编码基础_15.png

2一般情况下量化后高频部分包含大量的零系数

即时通讯音视频开发(三):视频编解码之编码基础_16.png

3量化对主观质量的影响

即时通讯音视频开发(三):视频编解码之编码基础_17.png

18. 码率控制

受到缓冲区,带宽的限制,编码码率不能无限制的增长,因此需要通过码率控制来将编码码流控制在目标码率范围内。

一般通过调整量化参数的手段控制码率:

  • 条带级控制
  • 宏块级控制

码率控制考虑的问题:

  • 防止码流有较大的波动,导致缓冲区发生溢出,
  • 同时保持缓冲区尽可能的充满,让图像质量尽可能的好而且稳定

CBR(Constant Bit Rate):比特率稳定,但图像质量变化大。VBR(Variable Bit Rate):比特率波动大,但图像质量稳定。

码率控制算法:

码率控制属于非标准技术,编码端有,解码端没有。

(原文链接:http://www.cnblogs.com/xkfz007/archive/2012/07/29/2613824.html)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK