H.264 vs H.265

前言

这篇文章将深度探讨 H.264(也称为 AVC)、H.265(也称为 HEVC) 以及它们的区别。H.264、H.265 都属于视频编解码器,而视频编解码器在我们的日常生活中无处不在,电视直播、去电影院看的电影、手机的抖音小红书 App 等等。它的出现彻底改变了我们的生活,影响着我们的方方面面。

视频编解码器

视频编解码器是一种工具,用于压缩视频文件以便于存储和传输,同时视频质量几乎不变。编解码器被用于各种视频设备、数字媒体应用和视频编辑软件中。

视频由许多单独的图像组成。我们以单张图像为例。如果你想查看分辨率为 1920x1080 的高清图像,你将需要总共 1920 x 1080 x 8 x 3 比特。这里,1920x1080 表示像素数量,3 表示 RGB 值,8 bits 表示每个像素值的大小。因此,对于一张图像,总大小约为 47MB。如果我们观看一个 30 帧(FPS)的视频,那么一秒就需要 30帧 × 47MB 大小的图像,约等于 1.4GB 的带宽。

而视频编解码器的作用是利用各种算法,在保证视频质量不变的情况下,将视频大小进行大幅压缩。因此,如果没有编解码器,我们传输音视频的成本将大大增加,而抖音、小红书、b站这些依赖音视频的产品也不可能发展起来。可以看出,编解码器对我们的日常生活起着举足轻重的重要。

f0dea0_19bf6c94df7d46549cb8d66f3761f7c9~mv2.gif

下面这张图是目前各个视频编解码器的发展历程:

codec_history5.jpg

可以看到,H.264 距离发布已经有 22 年了,而 H.265 也有 12年了,最近势头很猛的 AV1 则是在 2018 年发布的。如果 H.265 专利许可的问题无法解决,或许未来 AV1 将取代 H.265 成为新的视频编解码行业标准。AV1 有着开源、免费、高压缩率的特点,历史或将重蹈覆辙(MPEG-4 因专利许可问题而被 H.264 取代)。

H.264

定义

毫无疑问,H.264 现在仍是当今世界最流行的视频编解码器。它已经渗透到各个行业中,改变着我们的生活。

H.264,也称为高级视频编码(AVC),是一种广泛使用的视频编解码器,于 2003 年推出。由视频编码专家组(VCEG)和动态图像专家组(MPEG)联合开发,旨在实现高视频压缩效率的同时保持图像质量。它因能以低比特率提供高质量视频而受到流媒体服务的欢迎。

H.264 通过使用先进的熵编码和压缩技术实现了高效的结果,包括帧内和帧间预测、上下文自适应二进制算术编码(CABAC)、宏块表示(每个 16 x 16 像素)以及通过预测帧间运动来减少数据冗余的运动补偿。

扫描二维码关注公众号,回复: 17563086 查看本文章

工作原理

  1. 视频分帧与分块
    • 帧分割:首先,H.264会将原始视频按帧(frame)进行分割,每一帧会进一步划分成小的块。
    • 宏块(Macroblock):每一帧被划分为16x16像素的宏块,宏块是H.264编码的基本单元,宏块的处理是压缩过程中关键的一步。
  2. 预测(Prediction)
    • 帧内预测(Intra Prediction):对于一个帧内的宏块,H.264会通过使用周围已编码区域的信息(像素的上下文关系)来预测该宏块的内容。帧内预测通常用于I帧(关键帧)。
    • 帧间预测(Inter Prediction):对于视频中的连续帧,H.264会利用前一帧的已编码数据来预测当前帧的宏块内容。通过运动补偿(motion compensation)技术,计算宏块在前一帧中的最佳位置,进行预测。
  3. 变换(Transformation)
    • 对预测误差(残差,residual)进行离散余弦变换(DCT),将空间域的像素值转化为频域的系数。这一步有助于减少数据的冗余性。
    • 变换后的系数会存储并进一步量化。
  4. 量化(Quantization)
    • 对变换后的系数进行量化处理。量化会丢失一些精确度,但会大幅减少数据量。量化的强度决定了压缩率与图像质量之间的权衡。
  5. 编码(Entropy Coding)
    • 对量化后的系数使用熵编码(如CABAC或CAVLC)进行进一步压缩。熵编码是一种无损编码方法,能够根据数据出现的概率进行编码,频繁出现的数据用较短的码字表示,罕见的数据用较长的码字表示,从而达到压缩目的。
  6. 输出编码流
    • 将编码后的数据生成最终的视频比特流(bitstream)。比特流包括帧内预测、帧间预测、变换系数、量化参数、运动向量等信息。
    • 编码过程会生成不同类型的帧:I帧(关键帧)、P帧(前向预测帧)和B帧(双向预测帧),它们通过不同的方式记录视频帧的差异。
  7. 解码过程
    • 解码过程大致是编码过程的逆过程。首先,解码器解析视频比特流,然后执行熵解码、逆量化、逆变换等步骤,最终重构出原始视频帧。

Profile

配置文件的主要作用是平衡编码复杂度和压缩效率,确保在不同的设备和应用中都能有效地使用编码标准。

H.264 的常见 Profile 有如下:

  • Baseline Profile:这是最简单的配置文件,主要用于低功耗、低成本设备,包括一些视频会议和移动应用。Baseline 配置文件可实现约 1000:1 的压缩比——即 1 Gbps 的流可以压缩到约 1 Mbps。它采用 4:2:0 色度采样,这意味着彩色信息在垂直和水平分辨率上都是黑白信息的一半。Baseline Profile 的其他重要特性包括使用通用可变长度编码(UVLC)(Universal Variable Length Coding)和上下文自适应可变长度编码(CAVLC)(Context Adaptive Variable Length Coding)熵编码技术。
  • Main Profile:Main Profile 文件包含了 Baseline Profile 的所有功能,并对帧预测算法进行了改进。它用于采用 MPEG-4 格式的标清数字电视广播,但不适用于高清广播。
  • High Profile:H.264 High Profile 是 H.264 系列中最高效、最强大的配置文件,是广播和光盘存储(尤其是 HDTV 和蓝光光盘存储格式)的主要配置文件。它能实现约 2000:1 的压缩比。High Profile 还采用了自适应变换,能够在 4x4 或 8x8 像素块之间进行选择。例如,对于细节密集的图像部分使用 4x4 块,而对于细节较少的部分则使用 8x8 块进行压缩。这样既保留了视频图像质量,又可将网络带宽需求减少多达 50%。通过应用 H.264 High Profile 压缩,1 Gbps 的流可以压缩至约 512 Kbps。

下表给出各个 Profile 的对比:

配置文件 Constrained Baseline Profile(CBP) Baseline Profile(BP) Extended Profile(XP) Main Profile(MP) ProHiP High Profile(HiP) High 10 Profile(Hi10P) High 4:2:2 Profile(Hi422P) High 4:4:4 Predictive Profile(Hi444PP)
位深度(每样本) 8 8 8 8 8 8 8 to 10 8 to 10 8 to 14
色度格式 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0 4:2:0/ 4:2:2 4:2:0/ 4:2:2/ 4:4:4
灵活的宏块排序(FMO) No Yes Yes No No No No No No
任意切片排序(ASO) No Yes Yes No No No No No No
冗余切片(RS) No Yes Yes No No No No No No
数据分区 No No Yes No No No No No No
SI和SP切片 No No Yes No No No No No No
交错编码(PicAFF,MBAFF) No No Yes Yes No Yes Yes Yes Yes
B slices No No Yes Yes Yes Yes Yes Yes Yes
CABAC熵编码 No No No Yes Yes Yes Yes Yes Yes
4:0:0(单色) No No No No Yes Yes Yes Yes Yes
8×8与4×4 变换自适应性 No No No No Yes Yes Yes Yes Yes
量化缩放矩阵 No No No No Yes Yes Yes Yes Yes
独立的CB和CR QP 控制 No No No No Yes Yes Yes Yes Yes
分离色彩平面编码 No No No No No No No No Yes
预测无损编码 No No No No No No No No Yes

Level

Level 定义了编码器的性能约束参数,包括:

  • 最大分辨率
  • 最大码率
  • 最大帧率
  • 解码器缓冲区大小
  • 每秒最大宏块处理数等

下表给出 H.264 的 Level 对比

Level 最大解码速度(宏块/秒) 最大 frame size(宏块) 视频编码层(VCL)的最大视频比特率(受限基线、基线、扩展和主配置文件)(千比特/秒) 高分辨率下最高帧率示例(最大存储帧数)
1 1,485 99 64 kb/s 128×96 @30.9
176×144 @15.0
1b 1,485 99 128 kb/s 128×96 @30.9
176×144 @15.0
1.1 3,000 396 192 kb/s 176×144 @30.3
320×240 @10.0
352×288 @7.5
1.2 6,000 396 384 kb/s 320×240 @20.0
352×288 @15.2
1.3 11,880 396 768 kb/s 320×240 @36.0
352×288 @30.0
2 11,880 396 2,000 kb/s 320×240 @36.0
352×288 @30.0
2.1 19,800 792 4,000 kb/s 352×480 @30.0
352×576 @25.0
2.2 20,250 1,620 4,000 kb/s 352×480 @30.7
352×576 @25.6
720×480 @15.0
720×576 @12.5
3 40,500 1,620 10,000 kb/s 352×480 @61.4
352×576 @51.1
720×480 @30.0
720×576 @25.0
3.1 108,000 3,600 14,000 kb/s 720×480 @80.0
720×576 @66.7
1,280×720 @30.0
3.2 216,000 5,120 20,000 kb/s 1,280×720 @60.0
1,280×1,024 @42.2
4 245,760 8,192 20,000 kb/s 1,280×720 @68.3
1,920×1,080 @30.1
2,048×1,024 @30.0
4.1 245,760 8,192 50,000 kb/s 1,280×720 @68.3
1,920×1,080 @30.1
2,048×1,024 @30.0
4.2 522,240 8,704 50,000 kb/s 1,280×720 @145.1
1,920×1,080 @64.0
2,048×1,080 @60.0
5 589,824 22,080 135,000 kb/s 1,920×1,080 @72.3
2,048×1,024 @72.0
2,048×1,080 @67.8
2,560×1,920 @30.7
3,672×1,536 @26.7
5.1 983,040 36,864 240,000 kb/s 1,920×1,080 @120.5
2,560×1,920 @51.2
3,840×2,160 @31.7
4,096×2,048 @30.0
4,096×2,160 @28.5
4,096×2,304 @26.7
5.2 2,073,600 36,864 240,000 kb/s 1,920×1,080 @172.0
2,560×1,920 @108.0
3,840×2,160 @66.8
4,096×2,048 @63.3
4,096×2,160 @60.0
4,096×2,304 @56.3
6 4,177,920 139,264 240,000 kb/s 3,840×2,160 @128.9
7,680×4,320 @32.2
8,192×4,320 @30.2
6.1 8,355,840 139,264 480,000 kb/s 3,840×2,160 @257.9
7,680×4,320 @64.5
8,192×4,320 @60.4
6.2 16,711,680 139,264 800,000 kb/s 3,840×2,160 @300.0
7,680×4,320 @128.9
8,192×4,320 @120.9

优点

  • 广泛采用:几乎所有设备和平台都支持。
  • 成熟技术:经过充分验证并针对各种应用进行了优化。
  • 低处理能力需求:在较旧和性能较低的设备上也能流畅运行。。

缺点

  • 与 H.265 相比压缩效率较低:在相似视频质量下需要更高的比特率。
  • 对更高分辨率的支持有限:主要设计用于最高 4K 的分辨率。

H.265

定义

H.265(HEVCHigh Efficiency Video Coding,高效视频编码)于 2013 年推出,旨在在 H.264 基础上,提供更高的压缩率和更大的分辨率,目前 H.265 最大支持 16k 编解码,压缩后的大小是 H.264 的一半左右。

工作原理

  1. 视频分帧与分块
    • 帧分割:与H.264类似,H.265也将视频分割为一帧一帧进行处理。
    • CU(Coding Unit)和PU(Prediction Unit):H.265引入了更灵活的分块结构。H.265将每一帧分为多个CU,每个CU可以进一步划分成不同尺寸的预测单元(PU)和变换单元(TU)。这些单元的尺寸可以是8x8、16x16、32x32,甚至更大,以适应不同内容的压缩需求。
  2. 预测(Prediction)
    • 帧内预测(Intra Prediction):H.265在帧内预测中支持更多的预测方向,相较于H.264的8种预测模式,H.265支持33种预测方向,提供了更精细的预测能力。
    • 帧间预测(Inter Prediction):H.265与H.264一样,通过运动估计和运动补偿来利用相邻帧的信息进行预测。但H.265在帧间预测中采用了更加灵活的块划分和运动补偿方式。
      • 运动向量:H.265支持更精细的运动估计,允许更小的运动单位,从而进一步提高压缩效率。
      • 多参考帧:H.265能够使用多个参考帧(而H.264通常只使用一个),这在处理复杂场景时能提高预测的准确性。
  3. 变换(Transformation)
    • 离散余弦变换(DCT):与H.264类似,H.265也使用DCT对预测残差进行变换。
    • 变换单元(TU):H.265可以根据需要选择不同大小的变换单元(如4x4、8x8、16x16),而H.264的变换块是固定的16x16。这个灵活性使得H.265在编码时能够根据视频内容调整最合适的变换单元,达到更好的压缩效果。
  4. 量化(Quantization)
    • 量化:H.265也使用量化来减少变换系数的精度,从而压缩数据。H.265的量化过程支持更多的调整,使得视频在不同压缩率下的质量更加均衡。
    • 自适应量化:H.265引入了自适应量化方法,能够根据视频内容动态调整量化参数,从而实现更高的压缩效率。
  5. 熵编码(Entropy Coding)
    • CABAC(Context-Adaptive Binary Arithmetic Coding):H.265采用了与H.264相同的CABAC(上下文自适应二进制算术编码)作为熵编码技术,它能更高效地表示视频数据,并减少比特流的大小。
    • CABAC增强:H.265中的CABAC有一些增强特性,提高了编码效率,尤其是在处理较复杂视频内容时。
  6. 循环滤波(Loop Filtering)
    • 去块效应滤波(Deblocking Filter):H.265在编码和解码过程中,应用去块效应滤波来减少块效应(blockiness),这有助于提高视频质量。
    • 样本自适应偏移(SAO):H.265引入了SAO技术,可以进一步去除编码过程中产生的伪影和噪点,使视频质量更加平滑。
  7. 输出编码流
    • 将处理后的数据生成最终的比特流。比特流包含了所有预测模式、变换系数、运动向量、量化参数、熵编码等信息。H.265的比特流结构相比H.264有一定优化,能更好地适应不同的网络环境和存储设备。
  8. 解码过程
    • 解码过程与编码过程相反,解码器根据编码流中的信息,执行熵解码、逆量化、逆变换等步骤,重建出原始的视频帧。

Profile

主要的配置文件包括:

  1. Main Profile(主配置文件)
  2. Main 10 Profile
  3. Main Still Picture Profile
  4. Range Extension Profiles
配置文件 支持色深 支持分辨率和帧率 特性 适用场景
Main Profile 8位色深 支持高清和超高清(HD/UHD) 基本的视频编码,适用于大多数常见应用 视频流媒体、广播电视、在线视频、视频会议等
Main 10 Profile 10位色深 支持高清和超高清(HD/UHD) 支持10位色深和高动态范围(HDR) 4K视频、HDR内容、专业视频处理、电影后期制作等
Main Still Picture Profile 不适用 不适用 专为静态图像压缩设计,无运动估计和帧间预测 高分辨率静态图像压缩,如数字相机或扫描仪应用
Range Extension Profiles 支持扩展色深(10/12位) 支持HDR和WCG等扩展特性 支持高动态范围、高色深、宽色域等扩展应用 专业影像、4K/8K视频、HDR、WCG视频内容等

Level

下面这个表是简化版

Level Picture Size FPS
1 176 × 144 15.0
2 352 × 288 30.0
2.1 640 × 360 30.0
3 960 × 540 30.0
3.1 1280 × 720 33.7
4 2048 × 1080 30.0
4.1 2048 × 1080 60.0
5 4096 × 2160 30.0
5.1 4096 × 2160 60.0
5.2 4096 × 2160 120.
6 8192 × 4320 30.0
6.1 8192 × 4320 60.0
6.2 8192 × 4320 120.0
6.3 12288 x 6480 60.0
7 16384 x 8640 34.0
7.1 16384 x 8640 60.4
7.2 16384 x 8640 120.8

下面这个表是深度对比版

Level 最大亮度采样率(样本/秒) 最大亮度图像尺寸
(samples)
最大比特率 for Main
and Main 10 profiles (1000bit/s)
最大比特率 for Main 12
profile (1000bit/s)
最大比特率 for Main 4:4:4 12
profile (1000bit/s)
最大比特率 for Main 4:4:4 16
Intra profile (1000bit/s)
最大比特率 for High Throughput
4:4:4 16 Intra
profile (1000bit/s)
示例图片分辨率 @
最高帧率
(最大解码图片缓冲区大小)
最小压缩比 MinCR 每张图片的最大切片段数 (指在最高分辨率和最高帧率下,每幅图片允许的切片数量。) 每张图片允许的最大 tile 数
Main tier High tier Main tier High tier Main tier High tier Main tier High tier Main tier High tier rows columns
1 552,960 36,864 128 - 192 - 384 - 1,024 - 12,288 - 176×[email protected] (6) 2 16 1 1
2 3,686,400 122,880 1,500 - 2,250 - 4,500 - 12,000 - 144,000 - 352×[email protected] (6) 2 16 1 1
2.1 7,372,800 245,760 3,000 - 4,500 - 9,000 - 24,000 - 288,000 - 640×[email protected] (6) 2 20 1 1
3 16,588,800 552,960 6,000 - 9,000 - 18,000 - 48,000 - 576,000 - 960×[email protected] (6) 2 30 2 2
3.1 33,177,600 983,040 10,000 - 15,000 - 30,000 - 80,000 - 960,000 - 1280×[email protected] (6) 2 40 3 3
4 66,846,720 2,228,224 12,000 30,000 18,000 45,000 36,000 90,000 96,000 240,000 1,152,000 2,880,000
1,280×[email protected] (12)
1,920×1,[email protected] (6)
2,048×1,[email protected] (6)
4 75 5 5
4.1 133,693,440 20,000 50,000 30,000 75,000 60,000 150,000 160,000 400,000 1,920,000 4,800,000
1,280×[email protected] (12)
1,920×1,[email protected] (6)
2,048×1,[email protected] (6)
4
5 267,386,880 8,912,896 25,000 100,000 37,500 150,000 75,000 300,000 200,000 800,000 2,400,000 9,600,000
1,920×1,[email protected] (16)
2,048×1,[email protected] (16)
3,840×2,[email protected] (6)
4,096×2,[email protected] (6)
6 200 11 10
5.1 534,773,760 40,000 160,000 60,000 240,000 120,000 480,000 320,000 1,280,000 3,840,000 15,360,000
1,920×1,[email protected] (16)
2,048×1,[email protected] (16)
3,840×2,[email protected] (6)
4,096×2,[email protected] (6)
8
5.2 1,069,547,520 60,000 240,000 90,000 360,000 180,000 720,000 480,000 1,920,000 5,760,000 23,040,000
1,920×1,[email protected] (16)
2,048×1,[email protected] (16)
3,840×2,[email protected] (6)
4,096×2,[email protected] (6)
8
6 1,069,547,520 35,651,584 60,000 240,000 90,000 360,000 180,000 720,000 480,000 1,920,000 5,760,000 23,040,000
3,840×2,[email protected] (16)
4,096×2,[email protected] (16)
7,680×4,[email protected] (6)
8,192×4,[email protected] (6)
8 600 22 20
6.1 2,139,095,040 120,000 480,000 180,000 720,000 360,000 1,440,000 960,000 3,840,000 11,520,000 46,080,000
3,840×2,[email protected] (16)
4,096×2,[email protected] (16)
7,680×4,[email protected] (6)
8,192×4,[email protected] (6)
8
6.2 4,278,190,080 240,000 800,000 360,000 1,200,000 720,000 2,400,000 1,920,000 6,400,000 23,040,000 76,800,000
3,840×2,[email protected] (16)
4,096×2,[email protected] (16)
7,680×4,[email protected] (6)
8,192×4,[email protected] (6)
6

优点

  • 减少存储和带宽需求:使用 H.264 一半的带宽或存储需求。
  • 更好的视频质量:在减少数据使用的同时保持更高的视频质量。

缺点

  • 兼容性问题:不如 H.264 广泛支持,导致在某些较旧的硬件系统上播放时出现问题。
  • 需要更多的处理能力:H.265 的复杂算法比 H.264 需要更多的计算资源,导致在没有足够资源的硬件上处理速度较慢。

H.264 vs H.265

image.png

Features H.264 H.265
压缩效率 实现良好的压缩效果 比 H.264 效率提升高达 50%
视频质量 高质量但更高比特率 相同质量,一半比特率
比特率 更高以保持质量 相同画质视频降低 25-50%,比特率降低 33% 是较好的选择
分辨率 支持高达 4K 支持高达 16K
文件大小 较大的文件大小 较小的文件大小
处理能力 较低的计算需求 更高的计算需求
设备兼容性 支持大多数设备 与旧设备的兼容性有限
运动估计 预测准确性较低 更精确的运动补偿
块分区 使用固定的 16x16 宏块 使用灵活的编码树单元(简称 CTU)(64x64 至 4x4)
延迟 更低延迟,更快编码 由于复杂编码导致更高的延迟
带宽 需要更多带宽 需要更少的带宽
用途 流媒体和广播标准 高分辨率视频存储/流媒体的理想选择
采用情况 被广泛采用为行业标准 尽管存在兼容性问题,采用率仍在增长
支持的容器格式 MKV、MP4、QTFF、ASF、AVI、MXF、PS、TS、M2TS、EVO、3GP、F4V MKV、MP4、QTFF、ASF、AVI、MXF、PS、TS、3GP

我们该如何选择:

  • 如果您需要流式传输或存储高分辨率视频内容,例如 4K 或 8K,H.265 通常更优,因为它具有更高的压缩效率和更低的带宽需求,尤其是在受限网络上。
  • 如果兼容性和易用性是您的首要考虑,鉴于 H.264 广泛的设备支持以及在尚未完全支持 H.265 的旧设备和平台上提供更一致的观看体验,H.264 可能是更安全的选择。
  • 如果功耗是您关心的问题,考虑到 H.265 倾向于更快耗尽电池寿命,并对缺乏专用硬件加速的低端硬件或设备增加更多负担,H.264 较低的计算需求可能更为合适。

结尾

本文探讨了 H.264、H.265,并且了解了它们之间的区别和局限性,随着设备性能的不断增强以及对实时性的要求增加,H.265 将在未来一段时间将不断普及,并且与 AV1 共同竞争市场,而 H.264 将慢慢退出历史舞台。

猜你喜欢

转载自blog.csdn.net/Leon_Chenl/article/details/145294206
今日推荐