音视频基础(01)H264重要概念

一、前言:

H.264,也称为 AVC(Advanced Video Coding),是一种广泛应用的视频编码标准,由国际电信联盟(ITU-T)和国际标准化组织(ISO/IEC)联合制定。H.264 是一种高效的视频压缩标准,提供了出色的视频质量和压缩性能,适用于广泛的应用领域,包括广播、视频会议、视频流媒体和存储等。


二、Profile和Level:

2.1、Profile (配置)

Profile:这是编码器设置的一种配置,定义了压缩视频所需的工具和功能。主要的Profiles包括:

  • baseline:支持快速编码/解码,以适应低复杂度环境,适用于视频会议及移动应用。
  • main:提供更高的压缩性能和更复杂的工具,适用于广播和存储。
  • high:用于高清(HD)视频,支持更复杂的压缩技术,常用于DVD和蓝光等。

2.2、Level (级别)

Level 定义了 H.264 编码器的性能限制,比如最大分辨率、最大码率、最大帧率等。Level 的数值越高,支持的分辨率、码率等越高。

常见的 Level 示例:

  • Level 1.0: 最大分辨率 176×144(QCIF),最大码率 64 kbps。
  • Level 3.1: 最大分辨率 1280×720(720P),最大码率 14 Mbps。
  • Level 4.1: 最大分辨率 1920×1080(1080P),最大码率 50 Mbps。
  • Level 5.2: 最大分辨率 4096×2304,最大码率 240 Mbps。

2.3、对应关系:

LevelMax macroblocksMax video bit rate (kbit/s)Examples for high resolution @ frame rate (max stored frames)
per secondper frameBP, XP, MPHiPHi10PHi422P, Hi444PP
11,485996480192256128×96@30.9 (8) 176×144@15.0 (4)
1b1,48599128160384512128×96@30.9 (8) 176×144@15.0 (4)
1.13,000396192240576768176×144@30.3 (9) 320×240@10.0 (3) 352×288@7.5 (2)
1.26,0003963844801,1521,536320×240@20.0 (7) 352×288@15.2 (6)
1.311,8803967689602,3043,072320×240@36.0 (7) 352×288@30.0 (6)
211,8803962,0002,5006,0008,000320×240@36.0 (7) 352×288@30.0 (6)
2.119,8007924,0005,00012,00016,000352×480@30.0 (7) 352×576@25.0 (6)
2.220,2501,6204,0005,00012,00016,000352×480@30.7(10) 352×576@25.6 (7) 720×480@15.0 (6) 720×576@12.5 (5)
340,5001,62010,00012,50030,00040,000352×480@61.4 (12) 352×576@51.1 (10) 720×480@30.0 (6) 720×576@25.0 (5)
3.1108,0003,60014,00017,50042,00056,000720×480@80.0 (13) 720×576@66.7 (11) 1280×720@30.0 (5)
3.2216,0005,12020,00025,00060,00080,0001,280×720@60.0 (5) 1,280×1,024@42.2 (4)
4245,7608,19220,00025,00060,00080,0001,280×720@68.3 (9) 1,920×1,080@30.1 (4) 2,048×1,024@30.0 (4)
4.1245,7608,19250,00062,500150,000200,0001,280×720@68.3 (9) 1,920×1,080@30.1 (4) 2,048×1,024@30.0 (4)
4.2522,2408,70450,00062,500150,000200,0001,920×1,080@64.0 (4) 2,048×1,080@60.0 (4)
5589,82422,080135,000168,750405,000540,0001,920×1,080@72.3 (13) 2,048×1,024@72.0 (13) 2,048×1,080@67.8 (12) 2,560×1,920@30.7 (5) 3,680×1,536@26.7 (5)
5.1983,04036,864240,000300,000720,000960,0001,920×1,080@120.5 (16) 4,096×2,048@30.0 (5) 4,096×2,304@26.7 (5)

Level:级别。

Max macroblocks:最大宏块数。注:宏块尺寸是16x16的。

per second:每秒(的最大宏块数)。可用于约束帧率。

per frame:每帧(的最大宏块数)。可用于约束分辨率。

Max video bit rate (kbit/s):最大视频码率。不同档次(Profile)下会有区别。

BP:Baseline Profile,基线档次。

XP:Extended Profile,进阶档次。

MP:Main Profile,主要档次。

HiP:High Profile,高级档次。

Hi10P:High 10 Profile,高级10位档次。

Hi422P:High 4:2:2 Profile,高级4:2:2档次。

Hi444PP:High 4:4:4 Predictive Profile,高级4:4:4(实验性?)档次。

Examples for high resolution @ frame rate (max stored frames):范例:高分辨率@帧率(最大存储帧数)。

三、SPS和PPS:

在 H.264 中,PPS(Picture Parameter Set)SPS(Sequence Parameter Set) 是用于描述视频流的元信息,一般是第一个NALU,它们在解码器中起着重要作用。

3.1、SPS(序列参数集)

  • 描述一段视频流的全局编码参数。
  • 包括:
    • 视频的分辨率(宽高)。
    • 帧率。
    • 最大参考帧数。
    • 显示帧序号。
    • 编码器的 Profile 和 Level。

3.2、PPS(图像参数集)

  • 描述单张(或几张)图像帧的参数。
  • 包括:
    • 帧类型。
    • 熵编码模式(CABAC 或 CAVLC)。
    • 去块滤波器参数。
    • 帧内预测模式。
    • GOP中解码帧序号。

关系

  • SPS 是视频流级别的全局配置参数,而 PPS 是图像级别的局部配置参数。
  • SPS 和 PPS 存储在编码视频帧的头部,解码器需要先解析它们,才能正确解码后续视频帧。

四、I帧、B帧、P帧:

  • I帧(Intra-coded Frame):完整帧,是一种自包含的图像,编码时不依赖其他帧。用于快速恢复图像质量,通常是关键帧。
  • P帧(Predictive-coded Frame):使用前面的I帧或P帧作为参考,存储了相对于参考帧的差异,通常比I帧占用更小的空间。
  • B帧(Bi-directional Predictive-coded Frame):既可以参考前面的I帧或P帧,也可以参考后面的帧,通常提供最高的压缩效率,但延迟大。

五、YUV420\YUV422\YUV444:

可以参考这一篇,写得非常好,我不再重复造轮子:https://blog.youkuaiyun.com/qq_41468222/article/details/111031135

但是,记住,我们最常用的是YUV420P,单帧占用空间=长1.5 字节

六、GOP、帧率、码率:

6.1、定义:

  • GOP(Group of Pictures)
    • GOP是视频编码中的一个单位,由一组视频帧组成。通常包括一个I帧(关键帧),后面跟随多个P帧和B帧。GOP的长度(即帧的数量)和结构(I帧、P帧和B帧的排列组合)会影响编码的效率和视频的质量。
  • 码率(Bitrate)
    • 码率指视频在单位时间内传输的数据量,通常以kbps(千比特每秒)或Mbps(兆比特每秒)来表示。码率越高,视频质量通常越好,但所需的带宽也越大。
  • 帧率(Frame Rate)
    • 帧率是指每秒播放的帧数,通常以fps(frames per second)表示。常见的帧率有24fps(电影)、30fps(网络视频)、60fps(高清视频)等。帧率影响了视频的流畅度和播放体验。

6.2、关系

  • GOP结构与码率
    • GOP的结构(即I帧、P帧和B帧的数量及顺序)直接影响视频的编码效率和码率。例如:
      • 较长的GOP(更多的P帧和B帧)可以在一定程度上降低码率,因为P帧和B帧相对于I帧存储的是差异数据,减少了信息量。
      • 但是,如果GOP长度过长,可能会导致视频的访问延迟和错误传播问题。
  • 帧率与码率
    • 较高的帧率通常会导致较高的码率,因为每秒处理的帧越多,所需传输的数据量越大。为了保持相同的画质,较高的帧率需要更高的码率。
  • GOP长度、帧率和码率的综合影响
    • 整体码率:对于给定的帧率和GOP长度,可以通过调整I帧和P/B帧的比例来控制码率。当I帧比重增加时,码率通常会上升,因为I帧需要完整的画面数据。
    • 实时应用:在实时视频应用中,较短的GOP和较高的帧率有助于减少延迟,但可能需要更高的码率来维持视频质量。
    • 视频流媒体:对于流媒体,选择合适的GOP长度和码率可以确保在不同网络条件下流畅播放,使其在带宽有限的情况下能够接受。

6.3、经验值:

他们几个之间如何匹配,声望总结的很好:

https://docportal.shengwang.cn/cn/video-legacy/video_profile_apple?platform=iOS

七、宏块:

宏块(Macroblock)是H.264视频编码标准中的基本处理单元,用于图像压缩和编码。无论是帧内压缩,或者帧间压缩,都是以宏块为单位。

7.1、概念

  • 宏块是指在视频编码过程中定义的一个固定大小的图像区域,通常为16x16像素。它是H.264编码和压缩的基本单元,帮助编码器高效地分析和处理视频帧。

7.2、结构

一个宏块通常由以下几个部分组成:

  • 亮度分量(Y):在YUV色彩空间中,宏块的亮度分量通常占用16x16像素。
  • 色度分量(U和V):H.264采用4:2:0色彩采样,即每个宏块会包含一个16x16像素的亮度分量和两个相应的色度分量,U和V的尺寸为8x8像素。这意味着色度信息的分辨率较低,减少了数据量并提高了编码效率。

7.3、功能

  • 运动补偿:宏块支持运动补偿和预测编码。通过参考之前已编码的帧中的宏块,可以降低当前宏块编码所需的数据量。这种方法通过存储运动矢量(表示宏块如何在帧间移动)来预测当前帧的宏块。
  • 块别编码:H.264能够将宏块进一步细分为更小的块(如8x8或4x4),以更精细地进行编码。这种灵活性使得编码器可以有效地适应不同的内容和细节水平,优化压缩性能。
  • 变换和量化:在宏块内,首先会对块进行离散余弦变换(DCT),然后进行量化处理,以减少频率成分的细节,使得数据更容易压缩存储。

7.4、重要性

  • 编码效率:宏块是H.264中实现高效视频编码的关键单元。通过对宏块的运动估计和低频信号的编码,H.264能够在保持较好图像质量的同时显著降低比特率。
  • 错误传播与恢复:宏块的使用还帮助确定视频流中的错误传播。例如,当某个宏块的编码失败时,视频流的其他部分仍然可以正常显示,这有助于提高整个流的可靠性。
  • 复杂度和灵活性:H.264能够根据编码内容的复杂度灵活配置宏块的大小和处理方式,适用于多种应用场景,包括网络视频传输、存储和实时编码等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值