随着阿里云、腾讯云、华为云等云计算头部企业在分布式云赛道的发展进程加快,以及企业上云速度加快,市场对云计算不断提出更高要求,中国分布式云计算发展进入实践落地阶段。近期,党的二十大报告更是提出了“加快建设数字中国”“加快发展方式绿色转型”等重大战略,为分布式云计算的发展指明了方向和路径。
以“万象智算”为主题的2022全球分布式云大会·上海站于10月26日正式拉开帷幕,本次大会集结了信通院、阿里云、腾讯云、F5、OceanBase、浪潮云等分布式云计算及细分领域的领袖企业,共同助推云计算向智能计算升级,促进数网协同、数云协同、云边协同、绿色智能的多层次算力设施体系建设。
在10月27日上午举办的音视频技术领袖论坛上,腾讯云音视频专家工程师 刘兆瑞发表了题为《4K/8K超高清时代,媒体处理技术如何加速媒体数字化升级》的精彩演讲。
4K/8K超高清
当前业务接触的8K场景,码率基本达到100兆以上。如此大的带宽无论对于系统还是播放端,都带来了很多新的压力;同时,存储的成本也会几何倍数增长。无论是直播系统还是点播系统,都要经过转码过程,对于直播系统来说,如果要实现实时8K的高大分辨率,市面上还没有任何一个编码器能够在单台服务器上实现8K的实时转码,这也是行业面临的痛点问题之一。
另一方面,高清片源稀少,在AI之前也有专门的影片修复技术,大部分是通过人工手段,非常耗费人力、物力,无法大批量生产。现在通过AI能力的迭代,对非常老旧经典电影的修复能力,已经有很大的能力提升。
面向未来来,AR/VR的兴起,如果要达到比较好的效果、避免眩晕,往往需要更高的4K/8K的分辨率。除了清晰度和码率之外,延时也是AR/VR的关注重点,要考虑在大分辨率编码应用在新的玩法、新的应用上的延时问题。
媒体处理4K/8K架构优化
腾讯云音视频在编码方面实现了极速高清的能力,在不降低主观评分的情况下,降低50%以上的带宽以及存储。目前,团队在编码上的优化主要核心方向在两个点:
(1)怎么样在保证主观评分的情况下,尽可能降低视频的码率;降低码率的情况下,主要是要去解决4K/8K超高清视频它的高带宽的问题,比如8K大概在100兆码率,如果降低50%,那就是在50兆,超高清视频压力会大幅降低。
(2)在编码上的优化,主要是指在速度的优化。对于一个超高码率的直播系统来说,要实现实时编码,整体的编码器系统架构和速度上需要进行非常多的迭代。
编码优化
为了支持编码优化,腾讯云音视频内部无论是在264、265还是最新的266,都有专门的团队进行完全编码内核的自研,尤其在266方面参与了国际标准的制定,有100项以上的专利,各项编码评分成绩都很优秀。团队对整个系统进行了实时的转码的应用,支持了北京冬奥会8K 120FPS的实时直播。
一方面是适合编码的,或者是去适应主观的,进行一些对应的视频增强的工作,然后进行对应的编码IDU的分析,包括参考帧的决策,包括量化的过程等等,之后再进行一些后处理的工作。
编码标准规范协议,内容、码率分配、内部算法等自主决策的地方,也是实现编码器优化所要关注的重点,也是各个编码器压缩性能的区别点。
腾讯云音视频编码器的优化核心主要关注两个方面:一方面是工程上,在工程上第一点是在指令级,把大量代码用指令级进行优化,大幅提升运算速度;另外一点是帧级的并行,进一步更大范围内的宏块的并行。
算法上的创新,一方面是提升压缩率,包括帧结构的决策、码率分配;另一方面,在算法的速度上,快速过滤掉那块。
压缩率与速度
在压缩率和速度方面,腾讯云音视频着眼于帧结构的决策,如264只支持了一个B帧,可以被进行参考,无论是X64或X65,都不存在这样的机制。如果没有实现这样的机制,在MEPG内有一个B帧,因为范围内编码架构只有一个B帧作为参考,如果第五号帧去参考第四号帧,就要实现被参考的结构。
腾讯云音视频实现了多层级的B帧被参考机制,进行多层级的B帧参考,在16个B帧情况下,纯编码能力技术可以有5%以上的压缩。
在低延迟场景上,如云游戏、AR/VR等场景,是不开B帧的,B帧往往会做后向的参考,因为解码时要先解码后帧再解码前帧,必然带来延时的增加。但B帧有它的好处,例如一个宏块有两个mv进行参考,极限情况下能带来更大的压缩率。
这种场景下,腾讯云音视频提出了新的帧类型,叫GPB帧,它具有B帧的特性,有两个MV进行利用,能够提升压缩率;为了减少延时率,对其前后list进行约束。因此,GBP帧是一个B帧,同时有两个MV,有更大的压缩率,并且没有延时问题,在低延时场景下可以带来2%~4%的BDrate收益。
编码器向下兼容
编码器在不断迭代,例如266能够哦支持更多后处理的滤镜。将更领先的编码器所支持的能力降级到低档的编码器上,例如将CDEF的约束滤波应用到264上。通过前置处理的方式,主动检测编码中主观细节纹理的区域,平滑和消除周围毛刺,最好的方法是利用AI的能力来处理,缺点是对GPU的消耗非常高。
码率控制
前面提到的是对帧结构的构造提出了更好的帧结构参考和更加新的帧结构,从而让整体的压缩率降得更低。编码器可以更好地降低压缩率的另外一个方式就是整体的码率控制。整体的码率控制方式大致分为三个层级,第一个层级是场景级,第二个层级是帧级,第三个层级是宏块级。腾讯云音视频对多层级码率做了控制,尽量让每个bit的码率分配在人眼各项指标都感受到的区域。
具体的方法是,首先把视频切成若干个几秒的场景区域,在场景区域提前训练了AI模型,提取出视频特征,通过模型训练得到结果,即该段视频大概是怎样的码率,VMAF分是95分,如果编码质量高于95分,它跟源就非常接近的,再加更多码率去提升VMAF分,人眼感受不到,没有意义。
第一个层级会设计整个场景的基准码率,通过一些AI的手段提取特征,当前的码率大概是多少,VMAF大概是95分。
第二部分进行帧级的码率分配,得到一个场景和基准码率,看在场景内是有动的帧、静的帧,复杂的帧、简单的帧,进行更细粒度的帧级码率分配。
最后进行宏块级的码率分配,自适应量化的能力等。需要注意的是,码率分配的核心是在保证主观不变的前提下尽可能降低码率。例如,平坦区域细节并不多,码率达到一定程度再加码率只会造成浪费,JND或者AQ做的事情,是让码率分配得更均衡。
并行算法优化创新
4K/8K超高清场景要做到实时化,对编码速度的压力很大,腾讯云音视频对编码速度进行了很多的优化,分为以下两个方面。
第一,更好地并行化。举例来说,在做预分析时,X64或X65是大家已知开源最好的编码器,而X64之所以没有做帧级的并行,是由于X64是一帧一帧做帧结构的编码,后面帧的参考关系有比较复杂的变化,无法快速进行并行。在这一背景下,腾讯云音视频对整个编码结构进行了优化,在进行帧结构决策之前,先快速做内部帧类型的关系决策,决定当前帧参考哪几帧,另外的帧参考哪几帧,预先知道哪些帧之间没有并行参考关系,这些没有参考关系的帧可以进行编码并行加速。
第二,在算法方面,快速选择出最合适的划分,快速终止宏块的块划分;在预算上,采用空间换时间的算法,尽可能用高层信息技术弥补,通过算法的加速,以大约百分之零点几的压缩增益损失置换80%以上的加速。
编码能力方面,腾讯云音视频获得2020/2021 MSU(云端编码大赛)[2020全项最佳,2021 12/15最佳],O264/V265综合最佳,V265 MSU连续4年行业领先;TXAV1 MSU 2021 视频编码评测中取得综合指标第一,O266 4K@1FPS 赛道取得综合指标第一。
媒体处理4K/8K 极速高清
尽管一个8K 120FPS的直播档位上做了大量的优化,但在软编上还是非常难以用一个单机实现,目前各大厂商提供的方案大多是基于硬件的方案,使用硬件芯片实现265或者AV1的8K。解决这一难题,需要考虑整个业务的分布式系统构建,直播的转码分布式等。之所以不用硬编解决问题是出于以下几个方面考虑。
第一,从用户角度考虑,编码器在不停迭代,很多8K挡还是用265做,未来可能会换成266或者AV1。如果全身心投入一个硬件的方案或者给客户提供一个硬件方案,带来的问题就是随着编码标准的升级,再进行编码标准迁移时,整个硬件的芯片都需要进行对应的升级。如果是以软编实现,只需要做软件的升级,原先购买的服务器可以复用,升级的成本是非常低的。
第二,离线的、最极致的编码,压缩率最高的一定是软编方案,相比硬编有很多优势,一些复杂的算法在硬编上不太好做。
第三,从业务的场景考虑。一套硬件编码工具,可能支持了264或者265之类的8K视频编码,又支持HDR的能力,随着新标准不断迭代,之前的硬件不支持新标准的能力,更换整个系统是非常昂贵的。如果在软编的基础上,无论有什么新的标准,所有的业务需求都可以进行无损快速迭代优化。
既然软编能够做到,就应该用软编去做,无论从系统迭代还是功能开发的角度考虑,软编都有非常大的优势。
在直播的系统中,单机的转码无法实现8K 120FPS的实时编码,需要对于整体的直播转码架构进行更改,变成分布式的架构。传统的直播系统,一个转码服务器从源站拉流进行转码,转码之后下行去拉对应的流进行分发,整个编码的核心节点在一台服务器上。把直播和点播系统相结合,直播拉流之后相对独立,直播流处理系统并不进行实际的转码,反而进行分发工作,把整个实时直播流,做2秒或4秒一个小片,分发到点播离线的转码系统进行文件级转码。比如10秒的直播延时可以切5个两秒的片,直接发给下游不同的转码集群的机器进行处理,实现一路直播流,底层有更多的机器并行转码。
这样一来,可以通过软件的方式实现非常高分辨率的实时编码;另外,大部分直播系统是软件服务,软件系统的扩容非常简单,甚至资源接近于无限,整个直播系统和点播系统的打通,可以使整体资源利用率大幅提升,降低使用成本。
但是,这种做法也存在缺点,要把一个直播流切成一个一个文件的小片进行分发,延时会变得很高。这个延时大部分情况下还是可以接受的。首先,8K编码是非常复杂的一件事情,即使是硬件编码器,延时也有5、6秒左右,很难做到2、3秒的延时。其次,高分辨率的直播流分发,自身也有5秒以上的延时。
把直播和点播的系统打通后,原先默认一路直播流N个转码,通过直播和点播打通结合的方式,可以做到直播系统的千人千面,直播系统不同的人,比如显示不同广告的插入,下行有N个人观看的时候,可以把直播点播打通,切成很多小片放到下游的离线系统来进行并行处理,处理后,每个人观看不同的片,广告结束以后再回归到原来的直播系统。
AI处理
目前4K的屏幕已经普及了,但4K的片源非常少,尤其是很多经典电影的清晰度远远达不到4K。在此基础上,可以通过AI处理的方式,包括超分、画质增强等进行主观画质的提升。
首先,无论是超分算法、插帧算法还是去噪等,不得不面对的问题是片源多种多样,如果用一个通用的模型,都很难达到理想的效果;低清的片源需要很强的去噪,高清的片源则要细节增强的操作。这里延伸出第二个问题,一个视频,该怎样合理选择模型。目前的做法是,首先做画质评估,视频源通过AI能力评估当前画质如何,分辨率的超分形式是1080p到4K或是其他形式,之后从库里选出合适的模型进行操作。
从服务客户的角度考虑,腾讯云音视频在系统里针对不同清晰度的视频源预制了大量的定制模板,大部分的OTT或广电客户内部视频都是结构化存储,有自己的标签,了解视频属于什么样的类型,通过预先制定的模板,就可以选择适合的方式进行操作。
4K/8K超高清媒体的处理
除了超分、增强等已经提到的处理方式,腾讯云音视频还为超高清媒体提供以下处理支持。
当艺人劣迹曝光后,需要对劣迹艺人的相关视频做批量下线操作,腾讯云音视频系统为支持更好的人脸检测、人脸识别等检测,视频入库时进行结构化的存储,应对突发事件时就可以更快速地做下线或者人脸替换等处理。
面对4K/8K的超高清视频,大部分还是源站的服务。为了让系统私有化,部署在没有任何依赖的环境下,团队把对腾讯内部组件的依赖全部去掉,整个系统以容器的方式轻松快速地部署在任何一个有CPU或GPU的通用环境,来实现完整的4K/8K的超高清转码以及增强处理。
很多用户有自建的转码系统,腾讯云音视频也提供更加开放的方式,如底层的原子编码能力、底层原子的增强能力。如果用户有自身的转码系统,只需要把整个编码库进行简单替换,系统不需要操作,腾讯云音视频就可以把领先的编码能力、增强能力,完全部署在用户自己的系统里,编码器是完全开放的。