00:00
大家好,呃,我叫刘兆瑞,那目前呢,在腾讯呃视频云负责编码器优化,那以及呢,直播点播系统的一个呃,转码系统的一个构建。那今天跟大家主要想分享一个内容呢,就是说呃,随着目前分辨率的一个观看设备分辨率的一个更大,然后观看设备越来越高清。那其实我们已经面临一个4K和八超时的一个来临,那面对于这种4K8K的一个超高分辨率,那超高码率的一个视频,那我们有哪些,呃一些新的一些亟待处理的问题,有哪些新的痛点问题需要处理,那以及呢,我们如何利用媒体处理的一个技术来处理这些。呃,超高码率,超高分辨率的新的问题来辅助大家来进行一个加速的媒体数字化升级。那今天分享的内容呢,主要分为几部分,那第一部分呢,就是呃4K8K一些超高清视频,那它有一些什么样的特点,那这些呃,新的一些视频的出现,有哪些新的一些问题需要我们去面临,需要我们去解决。
01:16
那后面的几部分的内容呢,主要是根据于我们前面所说的面临的一些问题,然后呢,我们来进行一些分门别类的一些呃,媒体分门别类的用一些为我们媒体处理的技术来分别的来解决这些问题。那其实主要呢看呢,可以分为几方面吧,第一方面呢,就是对于一些编码器的优化,来使得我们编码器来更适应这种一些,呃,超超大分辨率啊,超大码率的一个视频,那第二部分呢,是在编码器之外呢,那我们结合一些其他的技术,能使这些超高分辨率的处理呢,适用于直播的一个场景,那我们的整体架构需要进行哪些的优化,那以及我们前后处理的一些技术啊,在最后一部分呢,也就是说。
02:06
呃,其实虽然我们的一个官方设备达到了一个很高的一个呃,播放的分辨率,那但是呢,我们在制作端。在采集端,很多时候呢,还没有一个这么高的分辨率的一个视频制作出来,那除此之外呢,那还有很多一些老的片源和电影,它其实并没有1080P的一个分辨率,但是呢,呃,人们对于这些相对较老的一个片源还是有一些呃高清播放的一个诉求存在。对,第部分是一个背景。呃,背景相关的一个介绍。那我从我们从我们这个,从我们的这个背景来看吧,啊,那目前呢,其实从播放端来看,我们播放的一个设备,其实它的所支持的分辨率是越来越高的,那其实现在的一个新的,不论是电视还是手机,往往都已经支持了4K的一个分辨率播放,当然了8K肯定也是未来的一个趋势,也是大家会支持的一个将来的一个分辨率,虽然现在可能对8K分辨率播放的一个知识设备还不太多。
03:14
那4K8K这种超高清视频的一个特点呢,就是它的分辨率非常大,它的码率非常高,对,那其实对于呃,这么高的一个分辨率和码率,对下游的很多系统都带来了一些新的挑战,那比如说对于直播的一个系统来说,那直播中的一个转码系统,那在转码的过程中呢。我们知道转码机制往往呃,它的一个处理速度以及性能消耗,是跟视频源的一个视频输出的一个分辨率以及码率相关,那如果说要转码实时的输出一个这么高的一个分辨率。那其实呢,呃,对于整个的一个转码系统,有非常多的一个呃挑战,那如何去满足一个实时的一个高分辨率一个转码系统,那我们无论是在编码器上,还是在我们的系统架构上,都有很多新的要优化的一个点。
04:12
那第二个,呃,问题呢,就是说。现在呢,有很多硬件厂商,那通过他通过一些硬件的方式来支持那4K8K分辨率的一个实时编码,来解决那个超高分辨率编码的一个痛点。那通过硬件的方式来解决的一个问题呢,就是说呃,硬件呃所编码出来的一个视频,虽然它的速度编码速度是足够快的,但是呢,它的压缩率相对来说比较差,也就是说呢,如果要达到一个4K8K的清晰度,清晰度,那硬件编码过程中呢,往往需要一个更多的一个码率。那比如说几十兆甚至上百兆的马力来传输呢,4K8K的一个视频,那其实。对于整个的一个传输链路来说,有一些更多的一个挑战存在。
05:02
那所以呢,我们希望还是能够通过技术手段,那通过一些软编的方式来实现一个速度足够快,那同时呢,呃,我们的一个压缩率又能达到一个普通软边的一个效果,压缩率足够好的一个解决方案。那从另一方面来看呢,其实ARVR也慢慢在一个进行一个兴起。那随着AR啊,以及VR能力的一个兴起,那这些技术呢,往往都是进行一个视频来进行一个传输,那如果要满足一个足够的真实卡,其实也是需要一个4K8K的一个超高清的一个视频,所以呢,从这里来看呢,那这种超高清的视频啊,也真的是未来的一个越来越重要的一个趋势,和很多相关技术的发展都息息相关。呃,那第二个部分呢,主要是来跟大家分享一下呢,那我们在编码方面所做的一些优化,以及呢,我们目前呃,自研的编码器所达到的一个编码的性能。
06:13
那首先呢,那从我们的编码器来说呢,那呃,其实我们整个内部的无论是264还是265,还是ay,包括最新的266,那我们所有的编码器是在我们腾讯内部自研的,那自研的A编码器的好处呢,就是可以符合我们的不同的业务场景来进行一些针对性的专门的优化,那比如说。啊,在北京冬奥会的时候,那我们的一个直播系统呢,就承载了我们4K8K的一个实时的编码压缩啊,甚至达到了12020FPS,那在这个背景下,为了达到这个效果,那我们在编码器的内核也做了很多一个,呃,针对性的一个优化。呃,那首先来看一下,那我们目前优化后大概编码器能够达到一个什么样的指标,那这样的指标呢?呃,来配合我们一个超清视频的一个编码。
07:10
首先呢,从我们自前的一个265编码器来看呢,那我们的265的编码器,那和比如说开源的叉265相比,那可以在呃远远提升速度情况下,同时呢,提供一个更好的一个压缩率啊,比如最左边这一个图啊,它的纵力是一个速度的表,那可以看到那我们呃所建的一个265的编码器,它在速度的指标上,那最快的档位可以远远的快于那叉265的一个最快的档位,提供一个呃。高分辨率下的一个快速编码。呃,那除此之外呢,那目前呢,我们的C编码器呢,也支持了4K8K啊,甚至十比特的一个HDR的一个编码,以及杜比画质的一些处理。
08:03
呃,那我们自研的一个AV的编码器的话呢,其实也支持了一个4K8K的一个实时编码,那对于AV的一个编码器来说呢,它通用的一个处理速度,复杂度相对比265来说是更高的,那在这里的情况下呢,针对于超高清的一个情况,那我们也支持一些呃快速的算法,那比如说我们和开源的一个s vta相比呢,可以有百分之呃55的一个工程性能加速。同时呢,还能带来16.8%的一个压缩。那除此之外呢,其实我们对解码器也进行了一定的自研,那我们的David,我们和比较开源的比较好的A的解码器David相比呢,可以加速10%以上的一个效果,大概和呃一回是因为C265的一个软解性能速度相当。
09:02
对,那前面主要跟大家大概分享一下,那我们呃,自研编码器能够达到什么样的一个压缩率以及速度的标准,那这里呢,主要跟大家说一下,那我们具体优化的点,那所去关注的点是哪几个点,我们怎么样去做的,那对于这个超高清的一个快速的一个编码,那我们核心的呃有几个点,那第一个呢。就是说我们怎么样能更好的提高他的病情度,那我们知道在编码的过程中呢,有啊征集的病情啊,有红块级的病情对吧,那我们做。我们进行优化的时候呢,那我们首先对于这种呃,需要实时快速的一个大合辨率的编码的时候,那升级的并行,那我们把它的帧结构来进行一些调优,那我们使中间的一些针能够更好的进行一个快速的针尖并行,那在红花型的并行,那我们通常是使用T来进行一个呃宫格的一个编码,那我们在T内的呢,不进行一些。
10:05
呃,额外的参考来进行一个红二级的票内的一个行级并行的一个加速,那第三个部分,那我们知道其实呃,在编码之前往往会有一个look high的预分析的一个过程。那只有一个视频进行一个look ahead分析结束之后才能够进行后续的一个编码操作,那所以呢,在有的时候呢,Look ahead会成为一个整个链路进行的一个卡点,那我们这里呢,对于预分期以及后处理的一个复杂度的瓶颈啊进行一些优化。对,那主要进行这些方式的优化,那使我们的整个编码的一个处理速度达到更高我们的并行度。更高啊,提高CPU的利用率。呃,那第二部分呢,主要是我们4K8K的一个呃极速高清的能力,或者是说我们在一个前面说的是我们编码器的一个情况,那这里主要是说我们整个的一个呃系统的一个架构,尤其是对于直播的来说,那如果在直播的场景,其实仅仅是编码器的优化,还是难以达到一个呃8K的一个编码实施,那在这样的背景下,我们怎么样在达到8K的一个编码实施的一个情况下,还尽可能的利用我们软软编的一个特性来提高我们的一个编码压缩率。
11:35
那目前呢,比如说常用的一个方案啊,包括我们最近帮一些呃,私有化的一些广电的客户所做,那很多情况它的源呢,可能是8K的AVS3的一个圆。然后呢,进入我们的一个硬件编码器,那输出的时候呢,输出包括8K的265啊,4K的265啊,1080P的264啊。甚至720P64等等多不同的马来进行一个不同的分发。
12:03
对,那这样虽然可以达到目标啊,但是啊其实还有很多痛点的存在,第一个呢,就是说我们8K的呃编码器价格还是普遍昂贵呢,尤其呢是我们呃8KA的编码器那目前更少。能够支持的情况的话,呃,更少,而且它的价格更加的贵。啊,第二部分呢,就是我们硬件的编码器呢,和优化后的软件的编码器相比呢,压缩率还是比较差的,我前面也提到了,对,当然这是由硬件编码器的一些特性决定,因为它要进行更大规模的一个并行,那必然有很多一些。算法它是不太适用于进行并行的,那如果软编的话就没有这个问题啊,第三部分呢,就是说我们的硬件编码器的话,往往它都是定制好的一个结构以及架构和芯片,对吧,但是呢,我们实际的业务场景是非常多的,比如说你的原有可能是A3的,那过几天可能又有其他形式的源,那过几天可能还有新的生新的格式出现。
13:08
那这对于硬件编码器来说,它整体的一个架构以及硬件都需要一个变更,那如果能够通过软编实现同样的效果,那就没有这个问题啊,第四部分呢,其实也是跟第三部分类似,就是一个扩展能力的支持啊,比如说我们有更多的一些对于下游,下游对于上游的一个编码后的一个,比如说时间戳,或者是C帧,或者是那HDR的一些能力的一些支持,那硬件浏码器有可能刚开始刚开始设置的时候,你是支持了这些功能,那其实随着业务的迭代,那各种各样的需求更越来越多的,那你很难去在硬件器内部来去定制这些需求来重新来实现这些功能。对。对,那为了解决这样的一个问题呢,那其实我们对整体的自己的一个直播系统架构也进行了一定的一个优化,那先来看一下我们,呃平时的一个整个直播系统的一个架构,那首先从推流上来到我们的一个网关。
14:11
那网关的流后面进行我们一个流处理,也就是我们对于啊整个直播流一个转码的过程,然后转码之后呢,将转码输出的流,那推流到那个CDN,然后最后呢,然后下行进行分发来观看。那么原来是大概一个这样的一个链,那对于我们的超高清4K8K的一个视频来说呢,虽然我们在呃编码器内部其实已经进行了非常多的一个速度啊,包括并行度,包括算法的一个优化。但是呢,对于比如说8K这种真的是非常大方面的一个视频,那只凭一台机器,一个转码节点,其实还是难以来完成一个实时的一个软编的一个过程,因此呢,我们在这种情况下,对于这种超大的分辨率,我们对于我们整个直播系统的一个架构进行了一些呃,新的优化。
15:05
呃,简单来说呢,那我们在原来的一个流处理,那直播的一个转码处理的一个节点,并不来进行一个真正的一个转码,只是进行一个类似转封装的工作,将他拉过来的一个源流呢,会切成一个个TS的一个小片。那然后呢,将这些TS小便呢,以文件的形式呢,发送给我们的一个离线转码处理集群,那离线转码处理集群呢,可以并行处理多个不同的一个TS小便,来实现多台机器的一个并行编码。这样的话呢,其实呃,就把原来把所有的一个编码任务集结在一台机器转来,转成一个利用一个离线的处理集群来进行一个分布式的一个多台机器的一个转码。那它的好处呢,首先呢,第一个是纯软件控制,所以它的一个可控性是非常高的,包括我们进行一个扩展以及业务升级,那需要更多的一些能力,那整个流程都是非常方便的。
16:07
啊,第二部分呢,其实也可以更好的一个节省成本,因为我们离线转码处理集群呢,本来就是存在的,那在云上其实有非常多的一个离线转码的任务,那这样呢,可以进行一个更多的集群,以及我们整个处理能力的一个混不混用,那把我们的资源利用率提升的更好。那另外呢,毕竟我们整个的呃,离线处理其实它是基于软编的,那软编还是说保留我们原来的一个好处,能够提供相比硬件来说一个更好的一个压缩率,能够在相同的画质上,那更好的一个降低我们所处理的率。更好的呃,对更好的降低我们所处理的一个码率,呃,同时呢,那我们整个的机器资源呢,以及业务开发模式呢,都可以实现一个嗯,复用的一个效果。当然它也有一定的缺点呢,就是延迟相对来说会高于一般的一个转码,因为呢,你要呃进行一个并行的一个转码,首先呢,你在开始。
17:05
流处理进行一个转换装的过程中呢,其实要进行一定的等待,那比如说你要等待第一个I帧和第二个I帧出现了,那这两个中间呢,才能作为一个独立的TS片来进行一个呃分发,所以呢,延迟呢相对来说会相对高一点,但也是在可接受的范围内,尤其是如果是下行使用嗯,Hrs来进行一个直播的话,那其实延迟基本上不会有一个很明显的变化。对,那在这样的一个处理过程呢,那我们在离线的一个处理集群,将转完的一个文件存到对应的位置后呢,那反过来呢,会通知我们的一个流处理,告诉他那文件已经处理完了,那那么流处理这个节点会把对应的文件拉回来,然后呢,再进行呃,下一步的一个转封装,封装成下行播放需要的一个文件格式来供下行来进行一个播放。
18:01
对,那前面说的是,其实我们已经把一个呃只实时直播的一个呃4K8K超高清的一个视频,那通过呃我们一个离线处理集群并行编码的一个方式,将它转换为多个并行的一个独立的离线转码的节点任务,那这里呢,再跟大家呃分享一下,那我们对于一个独立的节点,那一个单独的一个点播的节点,点播转码的一个节点,那这个节点的内部它的处理可以进行哪些不同的一个优化。啊,首先我们极速高清的一个能力的话,其实呃是可以用在我们点播的一个转码节点内部的,那我们对一个点播的转码节点的内部来进行转码的过程中呢,可以保证在相同的一个主观评分下,大概可以节省50%以上的一个带宽,这是和其余的一个软件编码器相比,那如果和我们硬件编码器相比,那可以有更高的一个压缩率啊,可能有70%以上的一个压缩率,也就是说那我通过我们前面的那一套方案对吧,直播的一个4K8K超后镜,那他在同样的画质所需要的一个编码的码率,可能只是硬件的一个码率的,呃,30%左右。
19:19
或者说我们在同样的码率下,那我们来评价我们的一个主观分数的一个提升,大概可以有20%以上。那为了达到一个这样的效果呢,那其实在我们的一个呃,软件的一个呃,离线转码节点编码内部呢,其实也做了很多不同的一个优化,有很多不同的步骤。首先呢,在前处理阶段,那我们有丰富的一个呃,前处理的一个能力,那包括呢,我们对于视频原画质的一个识别,识别之后呢,可以对视频原发式进行一定的降噪啊,以及增强操作,呃,当然这对于一些那我们超高清的视频情况可能不是特别多,那但是对于一些视频语言发质不是特别好的视频,需要增强的时候,那这个效果就会比较明显。
20:07
那第二部分呢,就是我们的一个编码内核,那我们在编码内核里,那是完全基于自主研发的一套,包括264265A以及266的一个编码。最后一部分呢,是在后处理方后提供了的S。对,那刚才粗略的说了一下,那其实从整个完整的一个链来看的话呢,啊,它的整个过程大概是视频源啊上来了以后呢,那我们对视频原先进行一个解码,解码之后呢,我们会对视频源进行一些场景的分类,那对于不同的分类呢,我们会有不同的一个编码的策略,接下来呢,会有对应的一个啊场景的一个检测,包括我们的噪声检测,包括我们的毛刺检测,来分析出视频语言中的一个噪声啊,毛刺啊,毛边的一个情况,来为后续的一个编码优化做准备。
21:11
那分析到这些结果之后呢,那在编码之前啊,分析之后,那我们会对于检测出来的视频源的一些问题来进行一定的一个修复,包括一些去噪能力,包括啊一些去盲刺,去毛边的能力,那对于一些啊画质重生以及画质修复的啊,一些比较复杂的场景,那我们也可以支持一些超分啊,插针呐等等一些老喷修复的一个能力。那对于视频源的画质来进行一个修复之后呢,在编码之前呢,那我们进行一个编码前的一个改制编码分析,那改制编码分析呢,主要其实就相当于分析出啊视频画面的ROI区域,比如说视频画面中的一个人脸区域,那比如说视频画面中的一个纹理复杂,纹理简单的区域,那对于一些呃纹理复杂的区域,比如说它会有一些遮盖效应存在,那对于这种情况我们可以适当的减少一些码率。
22:08
那对于一些呃纹理简单的区域,往往对于往往对于人类来说是一个呃比较敏感的啊,如果出现块效应会有很大影响的一个区域,那对于这种情况下,那我们会进行一些呃感知编码的调控分析,也就GND的能力,然后呢啊这些信息呢,带入到编码器中,那在编码数器的内核进行编码的时候,那可以根据这些ROI以及GND的一个结果来更好的来调配不同的block,不同的呃像素点之间的一个码率控制,码率分配能力。对,那最后一部分呢,啊,也就是说前面也说了,那我们其实目前播放设备可能达到了4K,但是并不是所有的偏远都达到了一个4K的分辨率来进行一个播放,所以呢。
23:01
从我们的一个片源的角度来说,尤其是老的片源还有很多呃,1080P,甚至720P的片源,那我们希望通过技术的能力呢,能够把这些老的片源来进行一个升级,达到一个更高的一个真的大概4K分辨率的一个清晰度,这样的话呢,对于人员感官来说呢,可以真的享受到一个4K的一个播放效果。嗯。这里有一个啊,我们大概的一个例子,那我们通常来进行一个呃,超高清的一个4K分辨率的一个生成的过程中呢,可能分为几个步骤,那首先呢,对于原进行一个分析啊。包括说呃,噪声的存在的情况,以及去压缩压缩时间所算的情况,然后呢,根据这样的结果进行一个综合的数据退化。啊,包括去噪声啊,纹理增强噪声意识等等,当然了,这里有一个特点可能啊。
24:00
单独说一下吧,也是我们实践中的一个结果,那比如说对于人脸呢,对于字体,这其实都是人脸在观看视频中非常关注的一个区域,如果说你的人脸区域做的非常好,其实啊周围的区域做的不是那么好,其实也能给人一个非常超高清的一个整体的感受和感觉。那对于呃,细节进行一个增强啊,噪声啊,纹理啊,啊进行一个。呃,意识之后呢,那我们下一步呢,可以进行一个色彩的一个增强,那包括4K8K的一个视频,其实。已经广泛的使用HDR的一个能力了,那在这样的情况下呢,我们偏远很多都是不具有HDR的一个播放效果的,那在这样的情况下,我们可以进行一个色彩的增强,以及我们支持HDR转HDR的一个能力。那最终可以达到一个高清分啊,高清分辨率同时呢啊,色彩鲜艳的一个大概真4K的一个结果啊,提升,或者说弥补我们片源不足的一个情况,那这里有一个大概的例子,那我们通过一个这样的处理后,尤其看人脸的区域,其实对于整体的一个话,是有非常高的一个提升的。
25:26
对,然后前面其实也跟大概跟大家也是呃分享了一下,那我们在做一个这实在的一个视频,来进行一个从原分辨率到4K分辨率的一个超分色彩的一个过程中,呃,其实我们内部看只是通过一个模型,其实很难达到一个非常理想的一个效果,对,那比如说我们可能对于背景,对于整体的画面是用一个通用的一个超分模型,但是对于人脸,对于字体,其实是采用另外的一个超回模型来进行一个单独的一个处理,然后呢,将两个模型相结合,才可以达到一个比较好的效果,尤其是人脸方位,人脸的一个方位向上。
26:06
那其实人眼的五官啊等等,其实都是有一些呃,更相对于通用来说有一些更些更加细致的一些单独的一些特征,那我们其实在这样的背景下,可以达到一个呃更好的一个增强效果。那比如说我们举一个例子,对于外部的客户来说,那我们呃实际的一个超高模型,可能只能达到一个通用的1080P到四呃到2K的一个,呃大概面对上涨的一个超分效果,但是对于人脸的区域呢,由于它的各个特征都是呃比较固定的,那我们可以进行专门的一个增强,嗯达到在人脸部分区域大约能够达到呃1080P到4K这样一个大分辨率的一个增强效果,然后相两者相结合呢,其实对于大部分我们主观的一个评测来看啊,都认为这个视频跟4K分辨率没有什么太大的差别,因为我们在人脸最关注的就是人脸字体方面,达到一个更高分辨率的一个提升的一个主观效果。
27:11
对,那今天跟大家分享的内容就这些啊,谢谢大家。
我来说两句