视频编解码流程

相关索引:https://blog.csdn.net/knowledgebao/article/details/84776869


编解码大概流程图(上边是编码,下边是解码):

视频编解码流程_第1张图片

 

1,编码过程:

视频编解码流程_第2张图片

  1. Motion Estimate(运动估计,运动搜索): 从前几帧中寻找匹配的宏块,有多种不同的搜索算法,比如: “Dia”、“HEX”、“UMH”、“ESA” 编码获得的质量依次提高,速度依次降低。其中快速算法(“Dia”、“HEX”、“UMH”)的编码质量比全搜索算法(“ESA”)低不了太多,但是速度却高了很多倍。得到运动矢量的过程被称为运动估计。
  2. Motion Compenstate(运动补偿): 运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。包括全局运动补偿和分块运动补偿两类。运动补偿结果分为二份,一个给到当前帧做参考求出差值Dn;另一个用于生成Fn的对应参考帧。
  3. DCT(离散余弦变换):DCT变换的全称是离散余弦变换(Discrete Cosine Transform),主要用于将数据或图像的压缩,能够将空域的信号转换到频域上,具有良好的去相关性的性能。图像经过DCT变换后,其频率系数的主要成分集中于比较小的范围,且主要位于低频部分。 DCT变换本身是无损的,但是在图像编码等领域给接下来的量化、哈弗曼编码等创造了很好的条件,同时,由于DCT变换时对称的,所以,我们可以在量化编码后利用DCT反变换,在接收端恢复原始的图像信息。DCT是从DFT(离散傅里叶变换)推导出来的另一种变换,因此许多DFT的属性在DCT中仍然是保留下来的。
  4. Quant(量化):除指定的数值(有损压缩)。量化的结果分为2分,一个做进一步处理,一份经过反量化(Rescale)/反DCT(IDCT)变化,结合第2步的运动补偿生成Fn对应的参考帧,供后续参考。
  5. Reorder(重排):比如游程编码等。
  6. Entropy encode(熵编码):进行最后编码,使用第5步结果以及Vectors和Headers的内容。
  7. Rescale(反量化):乘指定的比例。
  8. IDCT(反DCT):反DCT变换,得到D'n。
  9. reconstructed(重构):结合运动补偿和反量化结果,重构F'n参考帧。

视频编解码流程_第3张图片

 

 

2,解码过程

视频编解码流程_第4张图片

  1. Entropy decode(熵解码):对数据进行熵解码,填充Vectors和headers。
  2. Reorder(重排):比如游程解码等。
  3. Rescale(反量化):乘指定的比例。(参考编码过程)
  4. IDCT(反离散余弦变换):反DCT变换,得到D'n。(参考编码过程)
  5. Motion Compenstate(运动补偿): 上一帧的参考帧做运动补偿处理。(参考编码过程)
  6. reconstructed(重构):结合第5步的运动补偿结果和第4步的反量化结果,重构F'n参考帧。(参考编码过程)

 


参考资料:

  1.  直播技术——视频编解码(理论基础)
  2. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)
  3. DCT变换、DCT反变换、分块DCT变换
  4. 运动补偿和运动估计
  5. 编解码框架
  6. 变换,量化与熵编码
  7. 视频处理及编码标准
  8. 差错控制

 


有任何问题可以联系:[email protected]
 

你可能感兴趣的:(音视频相关)