前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >理解低延迟视频编码的正确姿势

理解低延迟视频编码的正确姿势

作者头像
用户1324186
发布2018-10-25 15:45:04
3.6K0
发布2018-10-25 15:45:04
举报
文章被收录于专栏:媒矿工厂媒矿工厂

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

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

表征视频系统延迟

(characterizing video system latency)

从摄像机捕获画面到显示像素之间是有许多步骤的,由这些处理步骤中的每一个步骤所贡献的延迟以及发送压缩视频流所需的时间一起产生总延迟,这种延迟有时也被称为端到端延迟。

测量视频延迟

(measuring video latency)

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

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

从视频中的线(lines)转换为时间需要帧率和分辨率。720p高清视频帧具有720条水平线,因此30fps的一行延迟为1 /(30 * 720)= 0.046ms的延迟。在1080p @ 30fps中,相同的单线延迟是更短的0.030ms。

定义“低延迟”

没有定义低延迟的通用绝对的定义,相反,被认为可接受的低延迟因应用程序而异。

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

在视频流应用中设计低延迟

与大多数系统设计一样,为传输系统实现适当的低延迟需要权衡各个方面,需要实现硬件、处理速度、传输速度和视频质量的最佳平衡。如前所述,任何视频数据的临时存储(未压缩或压缩)都会增加延迟,因此减少缓冲是一个很好的低延迟处理方法。

播放端想要播放视频必须等到缓冲区某些特定数量的数据可用,所需的数据缓冲量可以从几个像素到几个视频行,或者甚至到多个整帧。考虑到目标最大可接受延迟,我们可以计算系统可以容忍的数据缓冲量,从而计算出需要优化延迟时缓冲像素,线或帧的多少。

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

由于JPEG编码器的延迟通常只有几千个像素,所以相对整个延迟系统是无关紧要的,因为它太小而不能在端到端延迟方面产生任何显着差异。而相应的应该关注整个帧或大量视频行被缓冲的系统的其他部分。

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

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

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

DSB,主要的延迟贡献者

(contributor)

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

恒定比特率与可变比特率

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

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

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

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

用于定义恒定比特率的平均周期也对视频质量有重大影响。例如,CBR为“10Mbps”的流可以具有每秒10Mbits的大小,或者每半秒5Mbits,或者每10秒100Mbits。更重要的是要注意比特率在该平均周期内波动。例如,我们可能每5秒平均50Mbps,但这可能意味着前两秒为40Mbps,其余三秒为10Mbps。

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

确定解码器流缓冲区大小

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

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

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

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

DSB负责弥合通信速率不匹配的问题,并确保解码器不会“挨饿”传入数据,从而导致播放中断(回想起当您观看NetFlix或YouTube视频时有时出现的“正在缓冲...”消息)。 DSB通过收集和存储缓冲足够的输入数据来实现这一目标,直到它能够为解码器提供足够的数据来处理而不会中断。

图3. 通过带宽受限的通道,不同阶段采用恒定和可变比特率进行视频流传输

所需的缓冲量取决于比特率和流的平均周期。 为了确保解码器在播放期间不会耗尽数据,DSB必须存储与一个完整平均周期相对应的所有数据。 平均周期以及与解码器的流缓冲器相关的等待时间可以从几十帧到一整帧,并且在一些情况下,可以低至帧的一小部分。

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

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

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

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

选择最佳编码器的因素是看能否以最小的视频质量影响来控制比特率和平均周期,比如说有的编码器没有码率控制功能,具有码率控制但不能提供足够用户控制的编码器,以及支持低延迟编码的编码器,这些都会有非常不一样的视频质量。

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

码率控制粒度

码率控制过程采用几种复杂的技术方法来修改压缩程度以满足目标比特率,例如量化级别调整。可以应用一个简单的指导原则:调整压缩级别越频繁,压缩视频在质量和码率控制精度方面的效果就越好。

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

内容自适应码率控制

单通道码率控制算法基于知识和猜测来决定压缩变化的正确水平。知识是已传输的视频数据量,猜测是在平均周期内压缩剩余视频内容所需的数据量的预测估计。

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

总结

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

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

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

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

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

参考资料

[1] http://www.cast-inc.com/blog/white-paper-understanding-and-reducing-latency-in-video-compression-systems

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
媒体处理
媒体处理(Media Processing Service,MPS)是一种云端音视频处理服务。基于腾讯多年音视频领域的深耕,为您提供极致的编码能力,大幅节约存储及带宽成本、实现全平台播放,同时提供视频截图、音视频增强、内容理解、内容审核等能力,满足您在各种场景下对视频的处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档