iOS学习-即时通讯音视频(二)之视频编解码基础

参考大神:http://www.52im.net/thread-232-1-1.html

编码层次组成:
序列 (Sequence) 图像组(Group of Pictures, GOP)  图像(Picture)  条带(Slice) 宏块(Macroblock, MB) 块(Block)
层次的(Hierarchical)码流结构:

PB帧编码


 

IBBP序列编码对象
  序列 是指一段连续编码的并具有相同参数的视频图像
  序列起始码 是指专有的一段比特串,标识一个序列的压缩数据的开始.
 序列头 是指记录序列信息, 包含档次(Profile)  级别(Level) 宽度,高度, 是否是逐行序列, 帧率等内容
序列结束码 是指专有的一段比特串, 标识该序列的压缩数据的结束.
条带编码结构
 条带: 多个宏块的组合
条带起始码: 专有的一段比特串, 标识一个条带的压缩数据的开始.
条带头: 记录当前图像的相关信息. 含条带位置, 条带量化参数,宏块编码技术标识
条带编码对象
 视频编解码关键技术
 预测: 通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余
变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余
量化:通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼不敏感的信息来降低编码数据量
扫描:将二维变换量化数据重新组织成一维的数据序列
熵编码:根据待编码数据的概率特性减少编码冗余
预测:
  空间预测: 利用图像空间相邻像素的相关性来预测的方法
                      帧内预测技术:利用当前编码块周围已经重构出来的像素预测当前块
                      intra图像编码 (1帧)
时间预测: 利用时间上相邻图像的相关性来预测的方法
                     帧间预测: 运动估计 , 运动补偿
                     inter图像编码: 前向预测编码图像 (P帧),双向预测编码图像(B帧)
帧内预测
               1帧图像的每个宏块都采用帧内(intra)预测编码模式
                宏块分为8*8或者4*4块, 对每个块采用帧内预测编码,称为intra8*8或intra4*4
                帧内预测有多个预测方向:水平。垂直,左下,右上
                帧内预测还有直流(DC)预测
                色度块预测还有平面预测
  量化原理:将含有大量的数据集合映射到含有少量的数据集合中
码率控制:受到缓冲区,带宽的限制,编码码率不能无限制的增长, 因此需要通过码率控制来将编码码流在目标码率范围内
一般通过调整量化参数手段控制码率:
        帧级控制       条带级控制  宏块级控制
码率控制考虑的问题: 防止码流有较大的波动,导致缓冲区发生溢出
                                        同时保持缓冲区尽可能的充满,让图像质量尽可能的好而且稳定
    CBD(Constant Bit Rate): 比特率稳定,但图像质量变化大。 VBR(Variable Bit Rate): 比特率波动大, 但图像质量稳定
码率控制算法: 码率分配  码率控制
码率控制属于非标准技术, 编码端有,解码端没有
预测技术的作用是去除空间冗余和时间冗余。因为视频存在大量的空间冗余和时间冗余,包括空间冗余、时间冗余,预测后得到去除大部分空间或时间冗余的残差。
空间冗余
   图像空间相邻像素具有很强的相关性,帧内预测技术去除空间冗余。
亮度预测模式
  通过垂直、水平、DC、左下、右下来预测
色度预测模式
   常用的色度预测模式:垂直、水平、DC、平面,其中最优的预测模式为平面模式
时间冗余
  视频图像在时间上有较强的相关性,即存在时间冗余。去除时间冗余的编码技术有:运动估计、运动补偿
 运动模型分为
     平移 (适用于块匹配的运动估计和运动补偿)   仿射   双线性  
匹配准则:衡量待预测块和预测块之间的相似度
运动估计 :
       目的是去除视频图像的时间冗余。运动估计在搜索范围内为当前块寻找匹配最好的预测块,全搜索方式的运动估计计算复杂度》
快速运动估计算法种类
     在保持预测精度的同事减少运动估计的搜索次数,典型算法有:
              三步搜索  、二维Log搜索、正交搜索、十字搜索、新三步搜索、四步搜索、共轭方向搜索、梯度下降搜索、层次块搜索
搜索算法复杂度比较
分像素运动估计与运动补偿
  时域运动位置更可能在整象素之间,即分像素上。利用相邻的整像素可以估计出分像素的值:常用线性或双线性插值得到分像素的值。分像素运动估计有更高的预测精度,但复杂度也更高:1/2分像素运动估计,图像存储空间增加4倍,运动矢量需要放大2倍,1/4分像素运动估计,图像存储空间增加16倍,运动矢量需要放大4倍,计算复杂度也成倍增加。
分像素插值
多参考帧预测
       有更多的候选图像,搜索更精确的预测块
图像分块编码
双向预测编码
B帧有更好的编码效率
全局运动估计
     基于全局仿射运动模型。预测精度不如基于块的运动估计。MV数目少,适合简单运动场景的运动估计》
      
 

发布了36 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_28551705/article/details/85321623