大家好,我是声网的视频工程师许振明,明天跟大家次要介绍一下声网在 RTC 场景 UHD 视频的利用和摸索。次要基于声网 HFR 和 VDR 两个零碎来开展分享。
随着 RTC 技术的倒退和利用,越来越多的场景都须要接入 RTC 的能力。尤其是随着编码技术、设施能力的迭代,利用场景对视频分辨率、帧率、色调还原提出了更高的要求。
声网 RTC 在 UHD 视频 4K60FPS、HDR 方面做了一些工程实际和摸索,次要利用在教育双师、高端会议、体育运动等场景。上面咱们介绍下声网 UHD 视频的技术撑持,探讨下 4K60FPS、HDR 产品化上遇到卡顿、设施适配相干的典型问题。
1、UHD
UHD 是 Ultra High Definition 的缩写,也就是超高清的意思。超高清的规范个别是当分辨率达到 4K 或以上,也就是 3840×2160 分辨率及以上,与之对应的概念是 FULL HD、HD。
UHD 视频的概念呈现的很早,传统的视频畛域、家庭电视、传统的视频直播等都有所利用。UHD 视频有 5 大因素:
- 超高清:4K、8K
- 高帧率:渲染
- 高动静范畴:HDR
- 宽色域:WCG
- 色深:10bit、12bit
对于 RTE UHD 视频而言,即继承了传统 UHD 视频的几大因素,也做了一些裁减:
- 超高清:4K、8K
- 高帧率:采集、渲染
- 高动静范畴:HDR
- 宽色域:WCG
- 色深:10bit、12bit
- 色调范畴:Limit、Full 低延时
RTC 区别于传统直播很重要的一个劣势,便是低延时,不能因为分辨率的晋升影响延时的成果。
2、声网 UHD 视频
在声网的业务场景中,次要通过 HFR(high frame rate)、VDR(variable dynamic range) 2 套零碎实现 UHD 视频的反对。
HFR 次要波及的是超高清、高帧率和低延时;VDR 蕴含了高动静范畴、HDR 到 SDR 的转换、宽色域、色深、色调范畴。
如上图右侧所示,咱们对 UHD 视频的能力进行了简略的分层。
硬件层以相机为例,至多须要能采集 4K60FPS 的相片;显示设施也须要反对 HDR 的显示成果;零碎层蕴含所有业务场景中利用的零碎。如果零碎因版本问题不反对色调治理或者色域治理,对于 HDR 成果的实现会减少难度。
再往上是声网提供的根底能力层。比方咱们后面提到的 HFR、VDR,以及新一代编码算法 H.265、传输 SD-RTN;业务层蕴含各种指标、UHD 和根底能力层为业务提供的 API。
最顶部是应用层。声网作为一家 ToB 的公司,针对不同行业的客户会提供不同的场景利用能力,用业务层对应并撑持应用层。
对于 HFR 咱们制订了几个指标:
- 不掉帧
- 无卡顿
- 延时
- 清晰度
对于 VDR 的指标则次要是针对于色调相干,包含:
- 色调、色差
- 对比度、亮度
- MOS
- 设施适配
上面咱们针对 HFR 和 VDR 别离进行开展介绍。
3、HFR
在一些常见的卡顿场景中,尽管带宽足够,但因为帧率较低所以造成了主观上重大的卡顿。
除帧率外,对于卡顿的另一个评估规范是均匀度。如在 50 帧的视频中,每两帧的距离是 20 毫秒,唯独第 47 帧和 48 帧距离了 200 毫秒,这种不平均的状况也会导致显著的卡顿。
在 RTC 场景中,影响卡顿的因素次要有三个:
- 网络
- PIPELINE
- 性能
网络传输中的丢包或抖动,会导致卡顿;视频 PIPELINE 中掉帧、反复帧、吞帧以及抖动造成的不平均,也会使得帧率或均匀度呈现问题,从而导致卡顿;性能导致的卡顿次要是 CPU 或者 GPU 负载较高时,呈现耗时较高的状况。
通过咱们的测试,当 CPU 跑到 85% 以上时,会显著影响引擎的工作,进而呈现卡顿的危险。所以倡议把 CPU 的占有率放弃在 70% 以下,从而保障较好的解决性能。
现阶段常见的 RTC 场景是 720FPS15、720FPS30 或者 1080FPS50,4K60FPS 因为对 SDK 负载的压力以及各个环节的解决精度提出了更高的要求,比方带宽、线程调度、内存治理、采集精度、上屏帧率等,目前个别只利用于某些业余的场景。
另外,条件要求越高便越容易呈现问题,越凑近最终成果主观越难判断。60FPS 和 10FPS 的区别人眼是能够分辨的,但 56FPS 和 57FPS、60FPS 的区别,在人眼看来简直没有不同,因而须要借助业余的量化工具来进行测量。
量化的办法个别有两种,第一种是 perfdog 办法,通过统计屏幕 Display 新一帧后实在刷新的 FPS 和帧耗时。
这种办法的长处是能够看到整个业务的实在帧率,并且比拟贴近用户的主观感触。毛病是无奈检测出当视频中呈现的反复帧。
举个例子。当 60 帧的视频中第 56 帧和 57 帧是反复帧时,人眼显著能够看出卡顿,但 perfdog 依然会显示 60 帧的刷新,检测不到呈现的反复帧。对此,声网进行了计划的优化,基于相邻帧的类似度和距离提取,来解决重帧检测不到的问题。
这种办法次要通过对相邻的两帧进行类似度的计算,当类似度为 100%,也就是齐全重合的时候,就能够判断这两帧为重帧。另外要思考的是两帧提取的工夫和距离,如果在 60 帧的状况下提取的工夫距离是 30 毫秒,是与咱们的预期不相符的,咱们便能够认定这个视频不太合乎失常的逻辑。
从一些视频相邻的两帧,能够看出有肯定的变动幅度,但幅度很小。因为人眼的察看能力存在差别,进行主观的评测很可能会脱漏或呈现偏差,存在不确定性,因而通过量化办法能够防止不确定性的呈现,保障 4K60 帧的视频真的具备 60 帧。
前文咱们讲了如何评测 4K60 帧的视频品质,上面咱们谈一下针对 4K60 帧的卡顿都波及哪些问题,又该如何优化。
首先和大家介绍一个基于渲染来优化卡顿的计划 —— 基于 vsync 的渲染。
vsync 是垂直同步 (Vertical Synchronization) 的简称。根本的思路是将 FPS 和显示器的刷新率进行同步。vsync 在设施中个别是一个硬件信号,依据不同的平台封装不同的零碎机制。
针对 60 帧的视频来说,每一帧都管制在 16.6 毫秒内刷新,就能保障在一个 vsync 周期内,保障不会产生 Jank。但很多场景中不存在现实的状况,如下图所示:
原本 Jank 要显示 B,但因为 A 还在显示,导致了 B 的延时,从而产生了卡顿。B 会延时的起因是在两头解决时 B 的耗时略微有些长,产生了一些抖动。面对这种状况,声网采纳了相似于 Double Buffering 或者 Triple Buffering 的机制来解决偶然呈现的抖动。
另外,采集的精度也会影响卡顿的状况。例如在屏幕采集时,假如咱们模仿了一个 16.6 毫秒的事件驱动来采集 vsync,但很多状况下因为时延的问题采集不到比拟高的精度,成果如下图所示:
图中下侧折线图展现的是目前市面上以及局部开源 SDK 的能力状态,根本会在 14 毫秒到 18 毫秒间的稳定。这种状况下 60 帧的采集是不够的。因而声网在此基础上进行了优化,成果如图中上侧折线图所示,根本可能收敛在 16.6 毫秒高低,误差 1 毫秒左右,成果根本能够靠近 vsync。
上图是一个主观比照的简略示例。左侧为优化前,右侧为优化后。大家能够察看下画面外围的圈在转动时,左侧的顿挫感显著大于右侧。
在 VDR 中有一个很重要的概念叫色调空间,蕴含了 Color range 和 Color space。其中 Color range 次要是色调范畴,分为 full range 和 video range,取值范畴 [0,255], [16,235]。
Color space 指的是色域。RGB 是一个绝对色调空间,xyz 是相对的色调空间对应自然界的色彩,RGB 须要通过 color space(bt601,bt709,bt2020,srgb,dcp13) 映射到相对色调空间。同一个 RGB 值,不同的色域定义下,对应到不同的自然界色彩。
如下图所示,从 bt601 到 bt709 再到 bt2020,色域的范畴是越来越广的。所以如果是同一个 RGB 值,如果色域的定义不一样,那么对应到图中的落点也是不同的。
色差是 HDR 外面十分重要的一个概念。一个 yuv 用某个矩阵从 RGB 失去,转换成 RGB 也要用同样的逆矩阵,能力失去正确的 RGB 和色彩。
如上图所示,最左侧第一个人像为原图,第 2、第 3 集体像是用了谬误的逆矩阵进行转换,导致人脸、衣服的亮度和色调都产生了较为显著的变动。第 4、第 5 集体像是用来雷同的逆矩阵,所以转换进去的成果和原图更为靠近。
另外在 VDR 中,HDR 在亮度、色调色域、对比度上比 SDR 有劣势。如下图所示:
咱们能够看几个细节点。首先看天空的云彩云层以及蓝天的色彩,HDR 的表现力以及细节展现是比 SDR 更丰盛的。另外能够看一下夕阳的局部,光照照到高空上的一些细节体现,HRD 显著比 SDR 要更清晰,细节展现更多。
目前越来越多的设施开始反对 HDR 显示,据不齐全统计大抵有几万种不同的设施,但不同的设施对 HDR 的反对水平是不一样的。反对 HDR 的设施屏幕亮度从 500nit 到 2000nit,并且还有一部分反对 P3 色域、一部分反对 BT2020。
HDR 视频要在该设施上达到好的成果须要 tone mapping。下图是同一设施中不同 tone mapping 的比照:
这三张图来自同一个源,但在饱和度、画面细节、亮度解决、平滑解决等维度均有差异化的体现。人眼判断下,能够看出第一张图的算法解决成果是绝对较好的。
另外,很多设施并不反对 HDR 显示,并且 SDR 屏幕的亮度和色域达不到 HDR 的要求,如果不思考设施的反对强制的把 HDR 视频显示在 SDR 的屏幕上,会产生比优化前更差甚至不可承受的成果。
为了让尽可能多的用户体验到 HDR,咱们能够借助 HDR2SDR,把 HDR 的视频通过算法降级到 SDR,而后再在 SDR 的屏幕上做显示。
这个性能在 RTC 场景中有着很理论的利用。当一个频道内多人互动时,如果有一个人的设施不反对 HDR,传统的逻辑是所有人都须要退回到 SDR 发送。而借助 HDR2SDR 性能就能够让大家都体验到 HDR 的成果。
大家关注的另一点,是如何判断从 HDR 转换到 SDR 后的成果是否够好。对于好坏的判断须要一个参照物,如果成果和 HDR 很靠近并且又能失常显示,我认为就是一个绝对较好的成果。
下方的 4 张图是同一场景中不同的画面展现成果:
从图中能够看出,HDR 的在亮度和细节展现方面显著优于 SDR。第三张图是 HDR2SDR 的一种算法实现,展现成果有所优化,但仔细的敌人能够发现算法打消了灯光的光晕。
第四张图是 HDR2SDR 的另一种算法,在晋升展现成果的同时保留了光晕的细节。咱们个别认为第二种算法要优于第一种算法,更靠近咱们想要的需要和成果。但这类评估都是偏主观的,还是要看优化后的参照物是什么,特定状况进行特定的剖析。
以上是我本次分享的内容。声网在 UHD 视频方面次要是通过高帧率零碎和 VDR 零碎实现 UHD 视频的反对。欢送大家体验、交换,谢谢。
点击下方链接,即可查看残缺视频
https://www.bilibili.com/vide…
- 注册并试用每月 10000 分钟收费的声网视频 SDK,体验四行代码、三十分钟疾速构建沉迷式实时互动场景
- 下载体验声网相干 SDK & Demo