一、视频传输及播放过程
视频传输的过程主要分为7个步骤:
- 编码器输入:一般来说通常采用YUV作为视频编码器的输入,其中Y表示像素的灰度、U表示图像的色度蓝信息,V表示图像的色度红信息,用于表示像素的颜色,包含了色调和饱和度
- 编码器输出:可以输出为两种方向,一种是用于网络传输的比特流,一种是结合音频生成的MP4等格式文件
二、解码器
解码器通过5个步骤,将YUV转变为正常输出
- 帧类型分析: 在视频解码过程中,首先需要对码流中的每个视频帧进行类型分析。视频帧通常分为I帧(关键帧)、P帧(预测帧)和B帧(双向预测帧)等不同类型。I帧是完整的、自洽的帧,可以独立解码。P帧和B帧只保存了与之前帧之间的差异信息,需要参考之前的帧进行预测和重建。
- 帧预测: 对于P帧和B帧,视频解码器需要进行帧预测。帧预测是根据之前的I帧或P帧,以及当前帧与之前帧之间的差异信息,来预测当前帧的像素值。这样可以减少数据传输和存储量,提高视频编解码的效率。
- 变化/量化: 变化/量化是指对预测误差进行变换和量化。在帧预测后,得到的预测误差是残差数据,表示当前帧与预测帧之间的差异。解码器会对这些误差进行变换和量化,以便更高效地表示这些数据。变化量化通常采用离散余弦变换(DCT)和量化过程。
- 滤波: 解码器在进行变化量化后,得到的数据可能会存在一些伪像和失真。滤波是为了去除这些伪像和失真,恢复原始的视频帧。滤波过程包括去块滤波和去环滤波,用于平滑和修复图像。
- 熵编码: 最后,视频解码器会对处理后的数据进行熵编码,以进一步压缩数据。熵编码是一种无损压缩技术,它通过将频繁出现的像素值用短码表示,将不频繁出现的像素值用长码表示,从而减小数据的存储和传输开销。