H264压缩比
条件:
1.YUV格式为YUV420
2.分辨率为640x480
3.帧率为15
建议码流为:500kpbs(经验估算的,码流参考值可看:https://docs.agora.io/cn)
压缩比结果:约为百分之一
GOP:画面具有强相关性(相似度高)的一组帧
编码帧的分类:
I帧:关键帧,采用帧内压缩技术。IDR帧(解码立即刷新)属于I帧;
P帧:向前参考帧。压缩时,只参考前面已经处理的帧,采用帧间压缩技术。它占I帧的一半大小;
B帧:双向参考帧。压缩时既参考前面已经处理的帧,也参考后面的帧,帧间压缩技术。它站I帧1/4大小。
IDR帧与I帧的区别与联系:
IDR:解码器立即刷新,每当遇到IDE帧时,解码器就会清空解码器参考buffer中的内容(起到防止错误传播的作用);每个GOP中的第一帧就是IDR帧;IDR帧是一种特殊的I帧。
注:从上图可以看出B帧是参考前面的I帧和后面的P帧(B帧与B帧之间是没有参考的)
SPS与PPS:
在每个IDR前面都会有一个SPS和PPS帧。
SPS:序列参数集,作用于一串连续的视频图像。
PPS:图像参数集,作用于视频序列中的图像。
H264压缩技术:
帧内压缩:解决的是空域数据冗余问题(有损压缩)
帧间压缩:解决的是时域数据冗余问题(有损压缩)
整数离散余弦变换(DCT):将空间上的相关性变为频域上无关的数据然后进行量化(无损压缩)
CABAC压缩:根据上下文进行数据压缩(无损压缩)
宏块:
宏块是视频压缩操作的基本单元
无论是帧内压缩还是帧间压缩,它们都以宏块为单位
宏块还可划分为不同尺寸的子块,宏块划分越细,处理性控制力就越强
帧内压缩理论:
1.相邻像素差别不大,可以进行宏块预测(宏块之间进行比较)
2.人类对亮度的敏感度超过色度
3.YUV很容易将亮度与色度分开
注:亮度块与色度块是单独进行预测的
帧内预测图像后进行预测残差值的计算数据。预测模式信息+残差值可以完成还原成原始图像数据(一般是有损压缩,可能会存在色度上的损失)
帧间压缩原理:
1.GOP(见上面一开始写的内容)
注:帧间压缩一定是在同一个GOP中,相邻的帧之间的压缩。
2.参考帧:后面的帧参考前面的帧
3.运动估计(宏块匹配+运动矢量):通过宏块匹配的方法进行运动估计,从而找到运动矢量
4.运动补偿(解码):找到残差值,在解码的时候把残差值加上去