Nikos Zervas,CAST,公司
在视频世界中,延迟是指从捕获帧到显示该帧之间的时间量。低延迟是与视频内容进行实时交互的任何系统(例如视频会议或无人机驾驶)的设计目标。
但是,“低延迟”的含义可能会有所不同,实现低延迟的方法并不总是显而易见的。
在这里,我们将定义和解释视频延迟的基础知识,并讨论选择正确的视频编码如何对降低延迟产生最大的影响之一。
表征视频系统延迟
要使摄像机捕获的像素在视频显示器上可见,需要几个处理阶段。每个处理步骤产生的延迟以及传输压缩视频流所需的时间共同产生总延迟,有时称为端到端延迟。
测量视频延迟
延迟通俗地以时间单位表示,例如秒或毫秒 (ms)。
但视频延迟的最大贡献者是需要数据临时存储的处理阶段,即在某种形式的内存中进行短期缓冲。因此,视频系统工程师倾向于根据缓冲的视频数据来测量延迟,例如,两帧或八条水平线的延迟。
从帧到时间的转换取决于视频的帧速率。例如,每秒 30 帧 (fps) 视频中一帧的延迟对应于 1/30 秒 (33.3ms) 的延迟。
图 1:表示 1080p30 视频流中的延迟。
从视频线转换为时间需要帧速率和帧大小或分辨率。一个 720p 高清视频帧有 720 条水平线,因此 30fps 时一行的延迟为 1/(30*720) = 0.046ms 的延迟。在 1080p @ 30fps 中,同样的单行延迟需要更短的 0.030ms。
定义“低延迟”
没有定义低延迟的通用绝对值。相反,可接受的低延迟因应用程序而异。
当人类在实时视频会议或玩游戏时与视频交互时,低于 100 毫秒的延迟被认为是低的,因为大多数人不会察觉到那么小的延迟。但是,在机器与视频交互的应用中(这在许多汽车、工业和医疗系统中很常见),延迟要求可能要低得多:30 毫秒、10 毫秒甚至不到一毫秒,具体取决于系统的要求。
您还将看到术语“超低延迟”应用于视频处理功能和IP核。这是一个营销描述,而不是一个技术定义,是的,它只是意味着给定应用程序的“非常非常低的延迟”。
设计视频流应用中的低延迟
由于这在当今互联的视觉世界中很常见,因此让我们来看看通过网络将视频从摄像机(或服务器)流式传输到显示器的系统中的延迟。
与大多数系统设计目标一样,为流媒体系统实现适当的低延迟需要权衡取舍,而成功在于实现硬件、处理速度、传输速度和视频质量的最佳平衡。如前所述,任何视频数据的临时存储(未压缩或压缩)都会增加延迟,因此减少缓冲是一个很好的主要目标。
每当处理必须等到某个特定数量的数据可用时,就会强制执行视频数据缓冲。所需的数据缓冲量可以从几个像素到几条视频线,甚至到多个整帧不等。考虑到可接受的最大延迟目标,我们可以轻松计算出系统可以容忍的数据缓冲量,从而计算出在预算和优化延迟时应关注的像素、线或帧级别。
例如,对于使用 100p1080 视频的流媒体系统,我们的人类观众要求最大延迟为 30 毫秒,我们可以计算通过处理管道的最大允许缓冲,如下所示:
- 100ms/(每帧 33.3ms)= 3 帧,或
- 每帧 1080 行 x 3 帧 =3240 行,或
- 每行 1920 像素 x 3240 行 = 6 万像素
在这种情况下,我们可以看到,担心硬件 JPEG 编码器的延迟(通常只有几千像素)是无关紧要的,因为它太小,无法对端到端延迟产生任何显着影响。相反,应该关注系统中缓冲整个帧或大量视频线的点。
表 1 逐项列出了这种集中设计工作的代表性结果,其中提供了精心设计的“低延迟”视频流系统各个阶段的延迟分布。在这里,所有不必要的帧级缓冲都已被消除,并且始终使用硬件编解码器(因为软件编解码器通常具有更高的延迟,这是由于与操作系统的内存传输和任务级管理相关的延迟开销)。
处理阶段 | 缓冲 | 延迟 (1080p30) |
捕获后处理 (例如,拜耳滤光片、色度重采样) | 几行(例如 8) | < 0.50ms |
视频压缩 (例如具有单通道比特率调节的 Motion-JPEG、MPEG-1/2/4 或 H.264) | 用于从光栅扫描 转换的 8 行 编码器管道上的几千个像素 | 0.25ms << 0.10ms |
网络处理 (例如 RTP/UDP/IP 封装) | 几千字节 | < 0.01ms |
解码器流缓冲区 | 从多个帧(例如超过 30 帧)到子帧(例如 1/2 帧) | 从 16 毫秒到 1 秒 |
视频解压缩 (JPEG、MPEG-1/2/4 或 H.264) | 用于从光栅扫描 转换的 8 行 解码器管道上的几千个像素 | 0.25ms << 0.10ms |
显示预处理 (例如缩放、色度重采样) | 几行(例如 8) | < 0.50ms |
表 1.对低延迟 1080p30 视频流系统中延迟的贡献。
与大多数视频流应用一样,主要的剩余延迟贡献者是解码器流缓冲区 (DSB)。接下来,我们将看看这是什么,为什么我们需要一个,以及如何最好地减少它带来的延迟。
DSB,主要的延迟贡献者
在表 1 示例中,我们看到 DSB 可能会增加 16 毫秒到 1 秒的延迟。这个大范围取决于视频流的比特率属性。我们可以控制哪些属性来将 DSB 延迟保持在此范围的低端?
恒定比特率的错觉
流媒体视频系统的带宽限制通常需要调节传输比特率。例如,可能需要对 720p30 视频进行压缩,才能在比特率限制为 10 Mbps 的通道上成功传输。
可以合理地假设比特率调节产生的传输比特率在每个时间点都是恒定的,例如,每帧以相同的 10Mbps 传输。但事实证明这不是真的,这就是为什么我们需要为解码器进行流缓冲。让我们仔细看看这种比特率调节在视频压缩中是如何工作的。
视频压缩通过使用较少的位来表示相同的视频内容来减小视频数据大小。但是,并非所有类型的视频内容都同样容易接受压缩。例如,在给定的帧中,图像的平面背景部分可以用比更详细的前景部分所需的位数少得多的位数来表示。同样,高运动序列比中等运动或无运动序列需要更多的位。
因此,压缩本身会生成可变比特率 (VBR) 的流。通过比特率调节(或比特率控制),我们强制压缩以在相等的时间段内(例如,每 10 帧或每 3 秒间隔)生成相同数量的流数据。我们称之为恒定比特率 (CBR) 视频。这是以牺牲视频质量为代价的,因为我们实际上是在要求压缩引擎根据时间而不是图像或序列复杂性为内容分配位,因为它真正喜欢这样做。
用于定义恒定比特率的平均周期对视频质量也有重大影响。例如,CBR 为“10Mbps”的流的大小可能为每秒 10Mbits,或每半秒 5Mbits,或每 100 秒 10Mbits。还需要注意的是,比特率在此平均周期内波动。例如,要达到 10Mbps,我们可能平均每 50 秒 5Mbits,但这可能意味着前两秒为 40Mbits,其余三秒为 10Mbits。
正如限制比特率会影响质量一样,限制平均周期也会影响质量,平均周期越小,传输的视频质量越低。
确定解码器流缓冲区大小
现在我们了解到,CBR 流实际上在流中波动,并且传输比特率和平均周期都会影响质量。这使我们能够确定给定系统的 DSB 需要多大。
图 2:10Mbps CBR 流示例,平均周期为 10 帧。
首先,要认识到,尽管接收的数据具有可变比特率,但解码器仍需要以特定的、真正恒定的比特率输出数据,该比特率由输出显示设备(例如,1080p30)预期的分辨率和帧速率定义。
如果编码器和解码器之间的通信通道没有带宽限制,并且可以传输波动的比特率,则解码器可以在开始接收压缩数据后立即开始解码。然而,在现实中,通信信道通常确实有带宽限制,例如,6.802b WiFi 为 11Mbps,或者视频流可能只能使用特定数量的可用带宽,因为其他流量需要通过同一信道。在这些情况下,解码器需要以有时高于或低于通道比特率的速率馈送数据。因此,需要解码器流缓冲区。
DSB 负责弥合通信速率不匹配,并确保解码器不会“匮乏”传入数据,从而导致播放中断(回想一下可怕的“缓冲......”有时在观看 NetFlix 或 YouTube 视频时出现的消息)。DSB 通过收集和存储(缓冲)足够的传入数据来实现这一点,直到它可以为解码器提供足够的数据来进行处理而不会出现任何中断。
图 3:通过带宽受限通道进行视频流传输,不同点的恒定和可变比特率。
所需的缓冲量取决于比特率和流的平均周期。为确保解码器在播放期间不会耗尽数据,DSB 必须存储与一个完整平均周期相对应的所有数据。平均周期(以及与解码器的流缓冲区相关的延迟)的范围可以从几十帧到一整帧,在某些情况下,还可以减少到一帧的分裂。
总而言之,由于 DSB 对端到端延迟的影响最大,而 CBR 流的平均周期决定了 DSB 的大小,因此平均周期是设计低延迟系统的最决定性因素。
但是我们如何控制CBR平均周期呢?
使用正确的视频编码器减少延迟
我们已经看到,虽然 DSB 的大小极大地影响了延迟,但实际上需要多少缓冲的是早期视频编码阶段中发生的速率控制和平均周期定义。不幸的是,为特定系统选择最佳编码并不容易。
您可以选择在视频系统中使用多种编码压缩标准,包括 JPEG、JPEG2000、MPEG1/2/4 和 H.264。您可能会认为这些标准将包括处理速率控制的规范,但它们都没有。这使得在标准之间进行选择成为一项相当具有挑战性的任务,并且需要您在决策过程中仔细考虑特定的编码器。
控制比特率和平均周期的能力对视频质量的影响最小,是使最佳视频编码器高于其他编码器的主要因素。重新查看可用的视频编码IP核,可以发现其功能范围相当大。在频谱中不太好的一端是没有速率控制功能的编码器,具有速率控制但不能提供足够的用户控制的编码器,以及支持低延迟编码但质量水平非常不同的编码器。
为给定应用选择合适的编码器是一个涉及视频质量评估和比特率分析的过程,即使对于专业的视频工程师来说也具有挑战性。非专家(例如典型的 SoC 或嵌入式系统设计人员)应向编码器供应商寻求帮助,他们应该能够促进和指导您完成此类评估过程。
尽管如此,一些关键功能可以帮助您快速将高效编码器与非高效编码器区分开来,包括速率控制粒度和内容自适应速率控制。
速率控制粒度
速率控制过程采用多种复杂的技术方法来修改压缩程度以满足目标比特率,例如量化级别调整。研究这些方法超出了本文的范围,但可以应用一个简单的准则:调整压缩级别的频率越高,生成的压缩视频在质量和速率控制精度方面就越好。
这意味着,例如,您可以预期执行基于帧的速率控制(即,它每帧调节一次压缩)的编码器的效率低于在每帧期间多次进行速率控制调整的编码器。
因此,在追求低延迟和质量时,请寻找具有子帧速率控制的编码器。
内容自适应速率控制
单次通过率控制算法根据知识和猜测来决定正确的压缩变化水平。知识是已经传输的视频数据量。该猜测是对在平均周期内压缩剩余视频内容所需的数据量的预测估计。
更智能的编码器可以通过尝试评估重新主流媒体视频内容的压缩难度,使用已压缩内容的统计信息并展望尚未压缩的内容来改进此估计。通常,与仅查看先前数据量的无内容感知算法相比,这些具有内容自适应算法的编码器效率更高。
当低延迟和质量都很重要时,寻找内容自适应编码器。
结论
我们已经看到,对数据缓冲的需求会增加视频系统的延迟,虽然这种缓冲发生在解码器(解压缩)端,但影响满足传输和质量目标所需的缓冲量的因素在系统的编码器(压缩)端被阻止。
在设计系统以满足低延迟目标时,请记住以下几点:
- 要实现低延迟,需要在降低视频质量或提高传输比特率(或两者兼而有之)之间做出一些权衡。
- 确定整个系统的延迟因素,并消除任何不必要的缓冲。重点关注系统中最重要的粒度级别(帧、级别、像素)。
- 将选择最佳编码器作为重中之重,更具体地说,评估每个编码器的速率控制功能。确保编码器提供系统所需的延迟控制级别。至少,请确保编码器可以支持目标比特率和所需的平均周期。
考虑这些关键的编码器功能可以帮助您快速创建选择短列表。但是,与其他IP核相比,有效选择视频编码器更需要根据特定系统的延迟和比特率要求,仔细评估实际产生的视频质量。确保您与愿意帮助您了解特定系统内延迟影响的 IP 供应商合作,并为您提供轻松的现场评估流程。
考虑 CAST 提供的视频压缩内核
设计有效的视频处理和显示系统需要大量的技术专长,这使得大多数数字设计人员在选择IP时具有挑战性。在 CAST,我们努力帮助您更好地了解低延迟等问题,因为我们相信,如果 IP 解决方案最适合您的需求,您会选择我们提供的 IP 解决方案。
我们从Alma Technologies采购这些可重复使用的IP核。Alma Technologies 拥有无与伦比的 12 年经验,是复杂、高性能视频和静止图像压缩 IP 核解决方案领域的全球领导者,并提供高质量、易于使用的产品,可快速进行系统集成。
这些内核涵盖了用于视频压缩的所有流行行业标准,我们为每个内核提供了变体和选项,以满足大多数视频应用的需求(请参阅表 2,有关更多信息,请访问 www.cast-inc.com/compression)。参考设计板和评估套件让您有机会在自己的环境中使用自己的数据试用这些压缩内核。
自 2001 年以来,我们的销售和支持团队一直在帮助客户选择和使用压缩 IP 核,他们也随时准备为您提供帮助。
压缩标准 | 处理缓冲 | 平均周期 | 速率控制粒度 | 视频质量 | 端到端延迟@60fps |
JPEG格式 | 8 - 16 像素线 | 4 帧或更高 | Frame | 非常好 | 从 66ms 开始 |
H.264 - 内部 | 16 像素线 | 1/8 帧或更高 | Sub-Frame | 非常好 | 从 2ms 开始 |
H.264格式 | 16 像素线 | 1/2 帧或更高 | Sub-Frame | 非常好 | 从 8ms 开始 |
JPEG2000 | 2 个图块/框架 | 1 块/框架 | Tile/Frame | 非常好 | 从 4ms 开始 |
表 2.CAST 提供的编码器具有与延迟相关的功能。
关于作者
Nikos Zervas 博士是 CAST, Inc. 的首席运营官。他于 2001 年与他人共同创立了图像和视频压缩 IP 开发商 Alma Technolo-gies,并领导这家自力更生的公司担任董事长兼首席执行官九年,然后加入 CAST,担任营销和工程副总裁。他是希腊半导体行业协会的创始成员,并在其董事会任职数年,是IEEE高级会员和希腊技术商会成员,为GSIA的知识产权工作组做出了贡献,并发表了多篇关于数据压缩设计和相关主题的技术论文。