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 像素)以及通过预测帧间运动来减少数据冗余的运动补偿。

工作原理

  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)ProHiPHigh Profile(HiP)High 10 Profile(Hi10P)High 4:2:2 Profile(Hi422P)High 4:4:4 Predictive Profile(Hi444PP)
位深度(每样本)8888888 to 108 to 108 to 14
色度格式4:2:04:2:04:2:04:2:04:2:04:2:04:2:04:2:0/ 4:2:24:2:0/ 4:2:2/ 4:4:4
灵活的宏块排序(FMO)NoYesYesNoNoNoNoNoNo
任意切片排序(ASO)NoYesYesNoNoNoNoNoNo
冗余切片(RS)NoYesYesNoNoNoNoNoNo
数据分区NoNoYesNoNoNoNoNoNo
SI和SP切片NoNoYesNoNoNoNoNoNo
交错编码(PicAFF,MBAFF)NoNoYesYesNoYesYesYesYes
B slicesNoNoYesYesYesYesYesYesYes
CABAC熵编码NoNoNoYesYesYesYesYesYes
4:0:0(单色)NoNoNoNoYesYesYesYesYes
8×8与4×4 变换自适应性NoNoNoNoYesYesYesYesYes
量化缩放矩阵NoNoNoNoYesYesYesYesYes
独立的CB和CR QP 控制NoNoNoNoYesYesYesYesYes
分离色彩平面编码NoNoNoNoNoNoNoNoYes
预测无损编码NoNoNoNoNoNoNoNoYes

Level

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

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

下表给出 H.264 的 Level 对比

Level最大解码速度(宏块/秒)最大 frame size(宏块)视频编码层(VCL)的最大视频比特率(受限基线、基线、扩展和主配置文件)(千比特/秒)高分辨率下最高帧率示例(最大存储帧数)
11,4859964 kb/s128×96 @30.9
176×144 @15.0
1b1,48599128 kb/s128×96 @30.9
176×144 @15.0
1.13,000396192 kb/s176×144 @30.3
320×240 @10.0
352×288 @7.5
1.26,000396384 kb/s320×240 @20.0
352×288 @15.2
1.311,880396768 kb/s320×240 @36.0
352×288 @30.0
211,8803962,000 kb/s320×240 @36.0
352×288 @30.0
2.119,8007924,000 kb/s352×480 @30.0
352×576 @25.0
2.220,2501,6204,000 kb/s352×480 @30.7
352×576 @25.6
720×480 @15.0
720×576 @12.5
340,5001,62010,000 kb/s352×480 @61.4
352×576 @51.1
720×480 @30.0
720×576 @25.0
3.1108,0003,60014,000 kb/s720×480 @80.0
720×576 @66.7
1,280×720 @30.0
3.2216,0005,12020,000 kb/s1,280×720 @60.0
1,280×1,024 @42.2
4245,7608,19220,000 kb/s1,280×720 @68.3
1,920×1,080 @30.1
2,048×1,024 @30.0
4.1245,7608,19250,000 kb/s1,280×720 @68.3
1,920×1,080 @30.1
2,048×1,024 @30.0
4.2522,2408,70450,000 kb/s1,280×720 @145.1
1,920×1,080 @64.0
2,048×1,080 @60.0
5589,82422,080135,000 kb/s1,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.1983,04036,864240,000 kb/s1,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.22,073,60036,864240,000 kb/s1,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
64,177,920139,264240,000 kb/s3,840×2,160 @128.9
7,680×4,320 @32.2
8,192×4,320 @30.2
6.18,355,840139,264480,000 kb/s3,840×2,160 @257.9
7,680×4,320 @64.5
8,192×4,320 @60.4
6.216,711,680139,264800,000 kb/s3,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 Profile8位色深支持高清和超高清(HD/UHD)基本的视频编码,适用于大多数常见应用视频流媒体、广播电视、在线视频、视频会议等
Main 10 Profile10位色深支持高清和超高清(HD/UHD)支持10位色深和高动态范围(HDR)4K视频、HDR内容、专业视频处理、电影后期制作等
Main Still Picture Profile不适用不适用专为静态图像压缩设计,无运动估计和帧间预测高分辨率静态图像压缩,如数字相机或扫描仪应用
Range Extension Profiles支持扩展色深(10/12位)支持HDR和WCG等扩展特性支持高动态范围、高色深、宽色域等扩展应用专业影像、4K/8K视频、HDR、WCG视频内容等

Level

下面这个表是简化版

LevelPicture SizeFPS
1176 × 14415.0
2352 × 28830.0
2.1640 × 36030.0
3960 × 54030.0
3.11280 × 72033.7
42048 × 108030.0
4.12048 × 108060.0
54096 × 216030.0
5.14096 × 216060.0
5.24096 × 2160120.
68192 × 432030.0
6.18192 × 432060.0
6.28192 × 4320120.0
6.312288 x 648060.0
716384 x 864034.0
7.116384 x 864060.4
7.216384 x 8640120.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 -
128×96@33.7 (6)
176×144@15.0 (6)
2 16 1 1
2 3,686,400 122,880 1,500 - 2,250 - 4,500 - 12,000 - 144,000 -
176×144@100.0 (16)
320×240@45.0 (6)
352×240@37.5 (6)
352×288@30.0 (6)
2 16 1 1
2.1 7,372,800 245,760 3,000 - 4,500 - 9,000 - 24,000 - 288,000 -
320×240@90.0 (12)
352×240@75.0 (12)
352×288@60.0 (12)
352×480@37.5 (6)
352×576@33.3 (6)
640×360@30.0 (6)
2 20 1 1
3 16,588,800 552,960 6,000 - 9,000 - 18,000 - 48,000 - 576,000 -
352×480@84.3 (12)
352×576@75.0 (12)
640×360@67.5 (12)
720×480@42.1 (8)
720×576@37.5 (8)
960×540@30.0 (6)
2 30 2 2
3.1 33,177,600 983,040 10,000 - 15,000 - 30,000 - 80,000 - 960,000 -
720×480@84.3 (12)
720×576@75.0 (12)
960×540@60.0 (8)
1280×720@33.7 (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×720@68.0 (12)
1,920×1,080@32.0 (6)
2,048×1,080@30.0 (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×720@136.0 (12)
1,920×1,080@64.0 (6)
2,048×1,080@60.0 (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,080@128.0 (16)
2,048×1,080@120.0 (16)
3,840×2,160@32.0 (6)
4,096×2,160@30.0 (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,080@256.0 (16)
2,048×1,080@240.0 (16)
3,840×2,160@64.0 (6)
4,096×2,160@60.0 (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,080@300.0 (16)
2,048×1,080@300.0 (16)
3,840×2,160@128.0 (6)
4,096×2,160@120.0 (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,160@128.0 (16)
4,096×2,160@120.0 (16)
7,680×4,320@32.0 (6)
8,192×4,320@30.0 (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,160@256.0 (16)
4,096×2,160@240.0 (16)
7,680×4,320@64.0 (6)
8,192×4,320@60.0 (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,160@300.0 (16)
4,096×2,160@300.0 (16)
7,680×4,320@128.0 (6)
8,192×4,320@120.0 (6)
6

优点

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

缺点

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

H.264 vs H.265

image.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值