音视频学习笔记——H264编码

本文详细介绍了H264编码中的关键概念,包括图像帧的I帧、P帧和B帧特性,GOP的作用以及编码过程中的宏块、DCT变换和量化。作者结合零声教育的音视频流媒体高级开发课程,为对音视频感兴趣者提供了一次全面的学习指南。
摘要由CSDN通过智能技术生成

✊✊✊🌈大家好!本篇文章主要记录自己在进行音视频学习中,整理的部分H264编码相关的内容重点😇。
首先介绍了H264编码中图像帧的3种类型、GOP概念以及编码中比较重要的宏块DCT变化量化等内容。


本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感兴趣的读者,可以点击观看课程网址:零声教育


1.H264简介

H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,
其也被称为高级视频编码(Advanced Video Coding,简称 AVC),是一种被广泛使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的能够大大提高压缩性能的技术,并能够同时在高码率端和低码率端大大超越以前的诸标准。

2.图像帧的类型 (I 帧、 P 帧和 B 帧)

H264采⽤了独特的I帧、P帧和B帧策略来实现,,用于提升视频压缩效率、视频质量和视频恢复能力。

请添加图片描述

帧的分类中⽂意义
I帧帧内编码帧 intra pictureI 帧通常是每个 GOP的第⼀个帧,经过适度地压缩,做为随机访问的参考点。
P帧前向预测编码帧 predictive-frame通过充分将低于图像序列中前⾯已编码帧的时间冗余信息来压缩传输数据量的编码图像,称为预测帧。需要参考其前⾯的⼀个I 帧或者P帧来⽣成⼀张完整的图⽚ 。
B帧双向预测帧 bi-directional interpolated prediction frame既考虑与源图像序列前⾯已编码帧,也顾及源图像序列后⾯已编码帧之间的时间冗余信息来压缩传输数据量的编码图像, 也叫双向预测帧。 要参考其前⼀个I或者P帧其后⾯的⼀个P帧来⽣成⼀张完整的图⽚。

在这里插入图片描述

解码时,先解码I帧,然后解码P帧,最后参考B前后的帧来解码B帧。

3.GOP

  • 一个序列的第一个图像叫做 IDR 图像(立即刷新图像), IDR 图像都是 I 帧图像。在视频编码序列中,GOP 即 Group of picture 图像组 ),主要⽤作形容⼀个IDR帧 到下⼀个IDR帧之间的间隔了多少个帧。
  • GOP 长度越大,视频压缩效率越高,但视频质量和视频流恢复能力也越差,反之亦
    然。
  • 直播,如果是一秒 25 帧,一般 gop 设置为 25, 50( 一般是帧率的倍数)
  • 不是直播流,B帧一般设置2帧连续 B 帧,以降低码率。

GOP越大,编码的 I 帧就会越少。相比而言, P 帧、 B 帧的压缩率更高,因此整个视频的编码效率就会越高。但是 GOP 太大,也会导致
IDR 帧距离太大,点播场景时进行视频的seek 操作就会不方便。

4.H264编码

H264除了实现了对视频的压缩处理之外,为了⽅便⽹络传输,提供了对应的视频编码和分片策略;

组(GOP, group of pictures)、⽚(slice)、宏块(Macroblock)这些⼀起组成了H264的码流分层结构;

H264将其组织成为序列(GOP)、图⽚(pictrue)、(Slice)、宏块(Macroblock)、⼦块(subblock)五个层次。
在这里插入图片描述

4.1宏块

对于每一帧图像,是划分为一个个块进行编码,就是我们说的宏块。
宏块大小一般是16x16(H264 、VP8),32x32(H265 、VP9),64x64(H265 、VP9 、AV1),128x128 (AV1)。

宏块扫描

对于一个 YUV 图像,可以把划分成一个个 16x16 的宏块(以 H264为例), YUV 分量的大小分别是 16x168x88x8 。这里我们只对 Y 分量进行分析( U V 分量同理)。假设 Y 分量这16x16 个像素就是一个个数字,采用“之”字方式扫描每一个像素值,则可以得到一个“像素串”。

在这里插入图片描述

扫描像素值目的是为了编码。

4.2 DCT变换和量化

人眼对高频信息不太敏感 ,可以通过DCT变化和量化去除一些高频信息 。

在这里插入图片描述

量化是在不降低视觉效果的前提下减少图像编码长度,减少视觉恢复中不必要的信息。

H264采用标量量化技术,它将每个图像样点编码映射成较小的数值。

QP和Qstep

量化参数QP是量化步长Qstep的序号。

  • 对于亮度(Luma)编码而言,量化步长Qstep共有52个值,QP取值0-51
  • 对于色度(Chroma)编码,Q的取值0-39
  • QP取最小值0 时,表示量化最精细
  • 相反,QP取最大值51时,表示量化是最粗糙的。

Qstep

  • 让变换块的系数都同时除以一个值(量化步长,也就是 QStep),结果就是量化后的系数。
  • QStep 越大,得到量化后的系数就会越小 。
  • 相同的 QStep 值高频系数值相比低频系数值更小量化后就更容易变成 0
  • 解码的时候需要将量化后的系数乘以QStep 得到变换系数。

QP与Qsetp对应图
在这里插入图片描述

5.小结

首先介绍了H264编码中图像帧的3种类型,要理解,I帧、P帧和B帧解码时与显示顺序的区别,需先解码I帧,然后解码P帧,最后参考B帧前后的帧来解码B帧。

分清H264中序列(GOP)、图⽚(pictrue)、(Slice)、宏块(Macroblock)、⼦块(subblock)五个层次。

编码中需先通过帧内预测或者帧间预测去除空间冗余和时间冗余,然后进行DCT变化量化,去掉大部分高频信息。这样能使熵编码时压缩率更高。

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君莫笑lucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值