<hr style=” border:solid; width:100px; height:1px;” color=#000000 size=1”>
前言
@TOC
<hr style=” border:solid; width:100px; height:1px;” color=#000000 size=1”>
音视频基础学习实验地址:https://github.com/chensongpoixs/caudio_video
H264压缩比
条件: 1. YUV格式为YUV420 2. 分辨率为640X480 3. 帧率为15
公式
640*480*1.5 * 15 * 8
建议码流:500Kpbs
结果:约 1/100
一、 编码帧的分类
1、I帧(intraframe frame), 关键帧,采用帧内压缩技术。IDR帧属于I帧。
2、P帧(forward Predicted frame),向前参考帧。压缩时,只参考前面已经处理的帧,采用帧间压缩技术。它占I帧的一半的大小
3、B帧(Bidirectionally predicted frame),双向参考帧。压缩时,即参考前面已经处理的帧,也参考后面的帧,帧间压缩技术。它占I帧的1/4大小。
二、IDR帧与I帧的区别与联系
I_GOP
1、IDR(Instantaneous Decoder Refresh)解码器立即刷新帧
2、每当遇到IDR帧时, 解码器就会清空解码器参考buffer中内容
3、每个GOP中的第一帧就是IDR帧
4、IDR帧是一种特殊的I帧
三、SPS与PPS
1、SPS(Sequence Parameter Set)
序列参数集,作用与一串连续的视频图像。如seq_parameter_set_id、帧数及POC(picture order count)的约束、参考帧数目、解码图像尺寸和帧场编码模式选择标识等。
2、PPS(Picture Parameter Set)
图像参数集,作用于视频序列中的图像。如pic_parameter_set_id、熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等
四、H264压缩技术
1、帧内压缩、 解决的是空域数据冗余问题
2、帧间压缩、 解决的是时域数据冗余问题
3、整数离散余弦变换(DCT)、 将空间上的相关性变为频域上无关的数据然后进行量化。
4、CABAC压缩
五、宏块
1、宏块是视频压缩操作的基本单元
2、无论是帧内压缩还是帧间压缩、他们都以宏块为单位
六、帧内压缩的理论
1、相临橡素差别不大,所以可以进行宏块预测
2、人们对亮度的敏感度超过色度
3、YUV很容易将亮度与色度分开
帧内预测:
H264提供9种模式帧内压缩
h264_chiled h264_x16_x8
h264_frame
h264_frame_picture h264_en_picture_mode
七、帧间压缩原理
1、GOP
2、参考帧
3、运动估计(宏块匹配 + 运动矢量)
4、运动补偿(解码)
5、宏块查找算法(运动估计)
①、 三步搜索
②、二维对数搜索
③、四步搜索
④、钻石搜索
帧间压缩的帧类型
P帧
B帧
视频花屏原因
如果GOP分组中有帧丢失,会造成解码端的图像发生错误、这会出现马赛克(花屏)
视频卡顿原因
为了避免花屏问题的发生,当发现有帧丢失时、就丢弃GOP内的所有帧、直到下一个IDR帧重新刷新图像。
I帧是按照周期来的,需要一个比较长的时间周期,如果在下一个I帧来之前不显示后来的图像、那么视频就静止不动了,这就是出现了所谓的卡顿现象。
GPU解码问题
八、无损压缩
1、 DCT变换
2、 VLC压缩(MPEG2压缩)
3、 CABAC压缩 (H264)
H264查考资料:
https://en.wikipedia.org/wiki/Advanced_Video_Coding