如何正确选择对延迟影响最大的视频编码技术?(组图)

在视频世界中,延迟是从获取视频帧的瞬间到显示该帧的瞬间之间的时间量。低延迟是任何与视频内容实时交互的系统的设计目标,例如视频会议或无人机驾驶。

但是“低延迟”的含义可以不同,实现低延迟的方法也不一样。本文将定义和解释视频延迟的基础知识,并讨论如何正确选择对延迟影响最大的视频编码技术。

表征视频系统延迟(视频)

从相机捕获图片到显示像素之间有许多步骤,每个处理步骤所造成的延迟以及发送压缩视频流所需的时间都会导致总延迟,有时称为作为端到端延迟。

测量视频延迟(视频)

延迟通常以时间单位表示,例如秒或毫秒 (ms)。但视频延迟的最大问题是需要临时存储数据的处理阶段,即在某种形式的内存中进行短期缓冲。因此,视频系统工程师倾向于以缓冲的视频数据来衡量延迟,而视频的帧率决定了每一帧的延迟。例如,每秒 30 帧 (fps) 视频中的一帧延迟对应于 1/30 秒 (33.3ms) 延迟。

图片[1]-如何正确选择对延迟影响最大的视频编码技术?(组图)-4747i站长资讯

图 1. 1080p、30fps 视频流中的延迟

从视频中的行转换为时间需要帧速率和分辨率。一个720p的高清视频帧有720条水平线,所以在30fps下的一条线延迟为1/(30*720)=0.046ms延迟。在1080p@30fps下,同样的单线延迟更短< @0.030 毫秒。

定义“低延迟”

低延迟没有通用的绝对定义;相反,对于低延迟而言,可接受的内容因应用程序而异。

当人们在实时视频会议或玩游戏时与视频交互时,小于 100 毫秒的延迟被认为足够低,因为这样的延迟不会影响大多数人的体验。但在机器与视频交互的应用中,例如在许多汽车、工业和医疗系统中,延迟要求要高得多:30 毫秒、10 毫秒,甚至不到一毫秒,具体取决于系统的要求。还有一个术语超低应用于视频处理功能和 IP 核,这是一个市场概念,而不是技术定义,它只是意味着某些应用程序的“低延迟”。

为视频流应用程序中的低延迟而设计

与大多数系统设计一样编码器的意思是什么,为交付系统实现适当的低延迟需要进行权衡,即需要在硬件、处理速度、传输速度和视频质量之间实现最佳平衡。如前所述,视频数据的任何临时存储(未压缩或压缩)都会增加延迟,因此减少缓冲是一种很好的低延迟方法。

想要播放视频的播放器必须等到缓冲区中有一定数量的数据可用。所需的数据缓冲量可以从几个像素到几行视频,甚至到多个完整帧。考虑到目标最大可接受延迟,我们可以计算系统可以容忍的数据缓冲量,从而需要缓冲多少像素、行或帧来优化延迟。

例如,对于使用 1080p@30fps 视频的流媒体系统,观看者需要 100ms 的最大延迟,我们可以通过处理传输管道来计算最大允许缓冲:100ms / (33.3ms 每帧) = 3 帧,或每帧 1080 行 x 3 帧 = 3240 行,或每行 1920 像素 x 3240 行 = 620 万像素。

由于 JPEG 编码器的延迟通常只有几千像素,因此与整个延迟系统无关,因为它太小,无法对端到端延迟产生任何显着影响。反过来,应注意缓冲整个帧或大量视频行的系统的其他部分。

表 1 提供了精心设计的“低延迟”视频流系统的各个阶段的延迟分布。此处消除了所有不必要的帧级缓冲,并且始终使用硬件编解码器(因为与内存传输和操作系统的任务级管理相关的延迟开销,软件编解码器通常具有更高的延迟)。

表1.传输系统各部分对延迟的影响,1080p@30fps视频传输系统

图片[2]-如何正确选择对延迟影响最大的视频编码技术?(组图)-4747i站长资讯

与大多数视频流应用程序一样,主要的剩余延迟贡献者是解码器流缓冲区(DSB)。接下来我们将看看它是什么,为什么需要它,以及如何最好地减少它引入的延迟。

DSB,主要的延迟贡献者 ()

在我们的表 1 示例中,我们看到 DSB 可以增加 16 毫秒到 1 秒的延迟。这个大范围取决于视频流的比特率属性。我们可以控制哪些属性来将 DSB 延迟保持在此范围的下限?

恒定比特率与可变比特率

视频传输系统的带宽限制通常需要调整传输比特率。例如,可能需要压缩视频以通过比特率限制为每秒 10 兆比特 (Mbps) 的通道成功传输。

可以合理地假设在每个时间点都在传输恒定的比特率,例如,每个帧都以相同的速率传输。但事实证明这不是真的,这就是为什么我们需要解码器的缓冲区。

视频压缩是指通过使用更少的比特来表示相同的视频内容来减小视频数据的大小。然而,并非所有类型的视频内容都同样容易受到压缩。例如,在给定的帧中,图像的平坦背景部分可以用比更详细的前景部分更少的比特来表示。以类似的方式,高运动序列比具有中等运动或无运动的运动序列需要更多比特。

因此,压缩本身会产生可变比特率 (VBR) 流。通过比特率缩放(或比特率控制),压缩被迫在相等的时间段(例如,每 10 帧或每 3 秒间隔)产生相同数量的流数据,我们称之为恒定比特率 (CBR) 视频。它是以牺牲视频质量为代价的,因为我们实际上要求压缩引擎根据时间而不是图像或序列的复杂性为内容分配单元。

用于定义恒定比特率的平均周期也对视频质量有重大影响。例如,CBR 为 “” 的流可以具有每秒、每半秒或每 10 秒的大小。更重要的是要注意比特率在此平均期间会波动。例如,我们可能平均每 5 秒一次,但这可能意味着前两秒和剩下的三秒。

正如限制比特率会影响质量一样,限制平均周期会影响质量,而较小的平均周期会导致传输视频的质量较低。

图片[3]-如何正确选择对延迟影响最大的视频编码技术?(组图)-4747i站长资讯

确定解码器流缓冲区大小

图片[4]-如何正确选择对延迟影响最大的视频编码技术?(组图)-4747i站长资讯

图2. CBR传输系统,平均周期为10帧

现在我们知道 CBR 流在传输时实际上是波动的,并且传输比特率和平均周期都会影响质量,因此可以确定给定系统需要多大的 DSB。

首先,应该理解,尽管接收具有可变比特率的数据,但解码器以特定的、恒定的比特率输出数据,如由输出显示设备(例如)所期望的分辨率和帧率所定义的。

如果编码器和解码器之间的通信通道不受带宽限制并且可以发送波动的比特率,则解码器可以在它开始接收压缩数据时立即开始解码。但在实践中,通信通道通常有带宽限制,例如 802.11b WiFi 为 6Mbps,或者视频流可能只使用一定数量的可用带宽编码器的意思是什么,因为其他流量需要通过同一通道。在这些情况下,解码器需要以有时高于或低于信道比特率的速率传输数据。因此需要解码器流缓冲区。

DSB 负责桥接通信速率不匹配并确保解码器不会“饿死”传入的数据,从而导致播放中断(回想一下有时在观看或视频时出现的“缓冲…”消息)。DSB 通过收集和存储足够的缓冲输入数据来实现这一点,直到它可以为解码器提供足够的数据以进行不间断的处理。

图片[5]-如何正确选择对延迟影响最大的视频编码技术?(组图)-4747i站长资讯

图 3. 在带宽受限的通道上以恒定和可变比特率进行不同阶段的视频流

所需的缓冲量取决于流的比特率和平均周期。为确保解码器在播放过程中不会耗尽数据,DSB 必须存储对应于一个完整平均周期的所有数据。与解码器的流缓冲区相关的平均周期和延迟范围可以从几十帧到一整帧,在某些情况下,可以低至一帧的一小部分。

总而言之,由于 DSB 对端到端延迟的影响最大,而 CBR 流的平均周期决定了 DSB 的大小,所以平均周期是设计低延迟系统的最关键因素. 但是如何控制 CBR 平均周期呢?

使用正确的视频编码器减少延迟

我们已经看到,虽然 DSB 的大小会极大地影响延迟,但发生在早期视频编码阶段的速率控制和平均周期定义实际上决定了需要多少缓冲。不幸的是,为特定系统选择最佳编码并不容易。

您可以选择在您的视频系统中使用多种编码压缩标准,包括 JPEG、MPEG1/2/4 和 H.264。您会认为这些标准将包含处理速率控制的规范,但事实并非如此。这使得在标准之间进行选择成为一项相当具有挑战性的任务,并且需要您在决策过程中仔细考虑特定的编码器。

选择最佳编码器的因素是看是否可以在对视频质量影响最小的情况下控制比特率和平均周期。例如,有些编码器没有码率控制,有码率控制但用户控制不足的编码器,以及支持低延迟编码的编码器,视频质量会有很大差异。

为给定应用选择正确的编码器是一个涉及视频质量评估和比特率分析的过程,即使对于专业视频工程师也是如此。一些关键功能还可以帮助您快速将高效编码器与非高效编码器区分开来,包括码率控制粒度和内容自适应码率控制。

速率控制粒度

速率控制过程采用几种复杂的技术来修改压缩级别以满足目标比特率,例如量化级别调整。可以应用一个简单的准则:您调整压缩级别的频率越高,压缩视频的质量和速率控制精度就越好。

这意味着您可以控制编码器执行基于帧的速率控制(即,它每帧调整一次压缩),但效率低于在每帧期间进行多次速率控制调整的编码器。因此,在追求低延迟和高质量时,寻找具有子帧速率控制的编码器。

内容自适应速率控制

单程速率控制算法根据知识和猜测确定正确的压缩变化水平。知识是已经传输的视频数据量,而猜测是对平均周期内压缩剩余视频内容所需的数据量的预测估计。

更智能的编码器可以通过尝试评估剩余视频内容的压缩难度、使用压缩内容的统计数据并预测尚未压缩的内容来改进这一估计。通常,这些具有内容自适应算法的编码器比仅查看先前数据量的非内容自适应算法更有效。当低延迟和高质量都很重要时,可以使用内容自适应编码器。

总结

对数据缓冲的需求增加了视频系统延迟,而这种缓冲发生在解码器(解压缩)端,影响缓冲量的因素是在编码器(压缩)端确定的,编码端需要考虑的关键是满足传输要求和目标所需的质量。

在设计满足低延迟目标的系统时,请记住以下几点:

实现低延迟需要在较低的视频质量和较高的传输比特率之间进行权衡。识别整个系统的延迟贡献者并删除任何不必要的缓冲。关注系统中最重要的粒度级别(帧、级别、像素)。

选择最好的编码器至关重要,更具体地说,评估每个编码器的码率控制能力,以确保编码器提供对系统所需延迟的控制水平,至少编码器可以支持您的目标比特率和所需的平均周期。

考虑这些关键编码器功能可以帮助您快速创建一个简短的选择列表。然而,与其他 IP 内核相比,有效选择视频编码器需要仔细评估所产生的实际视频质量,以及特定系统的延迟和比特率要求。

译文:李晓原创《白皮书:——和——在视频中》

文章来源:https://www.sohu.com/a/259371761_100206743

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享