直播技术整理2.前处理

Posted by boredream on February 22, 2017

意义

1080P视频7s原始数据有817MB H.264编码压缩后只有708KB

压缩原理

最原始的做法是获取每一帧的图片,进行图片压缩处理

但是很多时候视频由于是连续的, 所以帧与帧之间的变化很小 所以后续开发出了一些比较高级的编码器, 可以帧间编码

比如第二帧和第一帧相比变化不大, 那第二帧只用记录这个微小的变化差异即可 这样就可以达到压缩又能保证图片质量的效果了

具体的帧处理如下 live3

主要有IBP三种帧的概念

  • I帧, 帧间压缩帧, 也就是关键帧 保留完整画面数据
  • P帧,前向预测编码帧 记录和前一个I帧或者P帧的差别, 利用前一帧+差别信息生成本帧最终完整画面
  • B帧,双向预测内插编码帧 记录了与前后帧(I帧或者P帧)的差别

其实只要有P帧+I帧就可以达到压缩的效果了 但是I帧压缩率是7, P是20, B可以达到50 因此即使B帧的计算需要更大的CPU,但是能提高压缩比例

所以压缩主要分为帧内压缩和帧间压缩 帧内压缩主要针对关键帧I帧 live4

压缩好I帧后, 再进行帧间压缩根据I帧确定P帧,最后根据I和P帧一起决定B帧 live5

具体压缩处理的冗余内容如下:

  • 空间冗余:图像相邻像素之间有较强的相关性
  • 时间冗余:视频序列的相邻图像之间内容相似
  • 编码冗余:不同像素值出现的概率不同
  • 视觉冗余:人的视觉系统对某些细节不敏感
  • 知识冗余:规律性的结构可由先验知识和背景知识得到

现在最主流的视频压缩编码就是H.264