大家好,又见面了,我是你们的朋友全栈君。
H264编码流程手绘图:
H264编码网上图:
I 帧
Fn(左上)是当前要编码的帧,他是 GOP 中的第一帧,也就是 I 帧,I 帧要进行帧内编码,首先要选择预测模式(Choose Intra prediction),然后进行帧内预测(Intra prediction),然后把每一个宏块的预测模式计算出来,然后进行量化( T ),再经过无损编码( Q ),最后进行拆包( Reorder )和熵编码( Entropy encode ),打成 NAL 头进行数据分发。
B 帧和 P 帧
Fn-1(中间)是 B 帧或 P 帧,首先要经过运动评估( ME ),对每一个宏块进行匹配查找,完成之后拿到运动矢量( MC ),根据运动矢量推断出运动评估之后帧的值,再与当前帧做残差值(残差值=当前帧-运动评估值),残差值与运动矢量相加,就可以得到当前帧数据,然后进行无损编码,最后生成 NAL 数据。
其中 Choose Intra prediction 和 Intra predictio 都是帧内压缩,ME(运动估计) 和 MC(运动补偿) 都是帧间压缩,T(DCT量化) 与 Q(VLC/CABAC熵编码) 都是无损压缩。
上面就是编码流程,解码就是反向操作,如下图:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/203968.html原文链接:https://javaforall.cn