快手作为目前世界上领先的直播平台,在业务形态不断拓展的过程中,也经历了直播架构的不断演变,从完全采用第三方解决方案,到目前自建源站、自研连麦解决方案、自建超高密度转码集群,搭建起了一套高稳定性的直播架构系统,全程把控了端到端的体验,不断根据用户体验在各个技术维度上进行打磨。本文来自郭亮在LiveVideoStackCon2019北京站上的精彩分享。
文 / 郭亮
整理 / LiveVideoStack
大家好我是郭亮,目前负责快手的直播架构和算法团队。很高兴今天有机会给大家分享“快手直播平台架构的演进历程”。首先,我会简单说明一下快手直播平台的现状;接着,我会详细介绍快手直播平台在近一两年的成果以及架构的演进,以及对用户体验、QoS、QoE、成本等的影响;最后,针对5G AI下的音视频技术发展趋势,抛砖引玉,和大家一起探讨。
一、 快手直播平台的现状
快手的DAU超过2亿,直播日活超过1亿,每天短视频上传量超过1500w。作为世界上领先的直播平台,拥有最大的活跃用户数、每日直播房间数,以及同时在线观众数。面对如此大的用户规模,如何打造一流的直播平台,实现一流的直播体验,是我们团队一直在深挖的课题。
在快手,并发在线的直播间数量和观众数量都是非常高的。这是由于快手一直坚持的普惠原则,在分发策略上对中小主播的侧重,再加上用户间长期积累的信任关系,使得平台活跃主播数量远远超过其它平台;其次,快手的业务场景是多样性的。多样化的业务,包括连麦、PK、聊天室、KTV、游戏直播等,覆盖了目前音视频技术的各个主流细分场景。此外,快手覆盖的用户群非常广,用户遍布城镇和乡村,有着多种多样的复杂网络环境,这对于直播清晰度和流畅度提出了非常大的挑战。为了应对多样化的业务场景和复杂的网络环境,保证用户直播的体验,快手对直播系统做了大规模的投入和优化,在架构、自研协议、算法等几个方面持续迭代。
目前业内通用的直播架构都是类似这样的:各家CDN厂商均基于标准的RTMP协议,提供推流、录制、分发等服务。同时一些第三方RTC服务提供商,也会提供连麦和PK的解决方案。站在集成的角度,快手理论上只要把业务集成到第三方标准服务上,同时完成UI、业务层的开发,就可以搭建一套完整的系统,我们一开始也是采用类似的方式满足了业务的基本需求。然而,随着系统规模的扩大,我们对用户体验的要求越来越高,这种方案会存在典型的木桶效应,主要痛点有:
●故障无法自主调度:采用CDN分发,主播推到某家CDN已经提前设定好。当CDN在局部发生可用性或质量下降时,无法做到通过自主调度,无缝切换到其他CDN,导致该区域用户均无法观看这个主播的直播,会非常影响业务的可用性。
●转码质量无法统一、扩展难、成本高:业界转码方案多样,质量与成本参差不齐。为了保证用户体验,一种可能的做法是要求各家针对快手统一架构与质量,这无疑存在工程量大、响应需求周期长的问题。很多CDN厂商提供的转码用软件实现,成本非常高,也无法弹性扩展。经过详细调研与慎重考虑,在快手的业务与体量下,自建源站 转码集群是最优的方案。
●推流质量不佳,难以优化:现有RTMP的推流框架,是基于TCP的,在弱网传输方面有很多天生的弱点。而主播一旦卡顿,所有观众都会卡,因此我们必须首先保证主播推流的稳定性。此外,在网络层面直播推流与连麦也需要统一的传输策略,否则两者相互竞争,会直接影响直播与连麦的质量,自己跟自己打架。因此采用统一的上行推流协议势在必行。而跟上面转码同理,要依赖于第三方来做统一的上行优化,是基本不可行的。快手拥有比较强的音视频传输算法团队,希望通过自研算法,提升直播推流的可靠性和稳定性,提升用户体验。
●可扩展性差:采用第三方方案,面临着无法快速迁移和扩展的问题。快手处于高速发展期,业务需求迭代频繁,业务种类增长迅速,高扩展性是满足业务快速迭代的基础。
基于以上这些考虑,快手迫切的需要自研更适合快手业务和技术形态的直播源站架构与私有传输协议,结合自研算法的落地,为用户提供高品质的直播体验。
以下通过快手直播技术平台发展的三个阶段,详细介绍快手直播平台的演进之路。
二、 快手直播平台的技术演进
1. 快手直播平台1.0
快手直播平台的1.0着重解决两个短板。一个短板是快手无法使用自研的推流协议,在这方面快手自建了源站,用自己的私有协议KTP进行推流。基于自建的源站,快手拥有了CDN调度的能力,这样对容灾和风险的把控就会非常强,解决了第二个短板。
A. 源站的稳定性设计
快手对稳定性要求非常高,自建源站必须有高可靠、高并发和易迁移的特性。高可靠主要体现在必须有一定冗余,而且可以自动且无痛降级到CDN,确保线上服务在各种异常情况下的稳定性,如专线故障、流量突增、单家CDN质量下降等;高并发主要体现在支持单源站扩容,一个源站可以快速稳定扩到一倍以上的规模,还支持水平扩展,能够支持快速的新建一个源站,这样对房间的支撑能力和分发能力都有高并发的扩展,可以很好的支持各种突发流量;易迁移则体现在快手是第一家基于兼容多家公有云基础平台设施的自建源站,可以很好的规避各种风险,包括稳定性和质量风险、商务风险等,可以同时兼容多家公有云平台的基础设施。
B. 基于KTP的推流
KTP协议是快手自研的传输协议,支持直播推流、RTC实时音视频通信、短视频上传等多种业务。去年快手的周超博士在ArchSummit上有一个详细的分享【快手多媒体传输算法优化实践】。KTP是快手基于UDP的自研传输协议,用于优化快手直播推流、PK/连麦等业务的体验。该协议主要包括网络控制部分和信源信号联合优化部分,包括拥塞控制,视频清晰度、流畅度相关的联合优化,对该协议有兴趣的同学可以参考上述链接的介绍。通过跟各种公开协议的对比PK,无论是RTMP,还是现在比较热的QUIC协议,快手KTP都有诸多明显的优势。
C. CDN智能调度
自建源站赋予了快手CDN调度的能力,即各家CDN都需要来快手自建源站进行回源拉流。快手源站通过控制各CDN的流量比例,在质量和成本间取得最好的折衷。然而,快手体量庞大,需要同时使用多家CDN,而各家 CDN 的质量、价格参差不齐,以及经常有一些不可预知的突发状况,因此,通过人工调度的方式,显然是无法接受的。快手通过自研智能CDN调度系统,精确捕捉 CDN 与用户的动态变化,从而更合理地利用CDN 资源,且大大降低观看故障时长,节约大量人力监控和维护成本。
2、 快手直播平台2.0
快手直播架构1.0,一方面,使用自研协议KTP来提升质量;另一方面,通过CDN的智能调度算法,一定程度保证了稳定性。快手的直播平台2.0则主要解决连麦问题。由于业务不断在提出各种需求,对体验要求高,如果使用第三方的方案,在产品迭代速度上会受比较大的影响。在快手直播平台2.0阶段,快手重点投入到了自研的RTC方案中。在RTC场景中,快手希望达到400毫秒以下的端到端延迟,有很好的丢包无感知特性,同时直播/连麦能无缝切换,支持PK和K歌等高级功能。
A. 音频优化
在音频处理上快手除了有自己的3A算法外,还做了针对高音质的回声抵消和去噪。另一方面,快手也具备KTV的功能,全民K歌、唱吧类似的混响效果都完全满足,同时部分效果针对不同K歌人群做了专业级调校的音效。
音频算法方面,快手设计了自适应码率算法,对主包和冗余包在不同网络下的配比、切换的时机等做了精细的调整,在jitter控制层面,支持音乐场景和通话场景下两种jitter模式无缝切换的双jitter模式。
B. 基于KTP的连麦
快手的连麦也是基于KTP协议的。与直播一样,KTP同时做了网络控制以及信源信道的联合优化。然而,与直播相比,连麦对延迟的要求更加苛刻,KTP针对连麦这类RTC场景做了深入的优化,包括对网络状态感知的流量控制算法(NATC)和对编码质量感知的码率自适应算法(QARC),支持动态码率、帧率、FEC/ARQ等,同时还支持多人多链路联合优化、ICE、LTRP等技术。与国内一线RTC的竞品对比,无论是连麦综合质量(清晰度、延迟、流畅度),还是网络响应速度上,基于KTP的方案,均有比较明显的优势。
另一个需要考虑的问题是直播与连麦的平衡,这依赖于方案的选择。一类PK连麦使用的是第三方的解决方案,倾向于服务端混流的方式,另一类采用的是主播端混流的方案,快手采用的后者,也就是主播端混流方案。
在服务端混流,一个问题是成本比较高,可扩展性也差。另一个是在快手的业务场景中,直播连麦发生切换时,体验不佳。在主播端合流,客户端需推一路延迟可以较大的直播流,同时推一路低延迟的实时连麦流。此时,直播和连麦两路流天然的形成了竞争,如何平衡二者的关系,也直接影响着直播与连麦的质量。在KTP中,通过实时动态的交换直播流与连麦流的网络状态信息与流控状态信息,从而联合作出最佳的决策。
至此,快手基本上所有的方案都是自研的,包括快手源站、KTP、直播/连麦方案等,快手直播平台2.0的使命也完成了。
3、 快手直播平台3.0
接下来介绍的快手直播平台3.0,这个版本的重点则是快手的直播伴侣、转码集群和游戏多码率自适应。
给大家分享一下快手上游戏品类的数据,目前快手游戏直播的日活是3500万(2019年10月快手游戏直播日活增长到4000万),每月开播的游戏主播超过了200万。用户对游戏直播的刚需,使得它日渐成为一个非常重要的场景,需要我们团队对这个场景做深入的优化。
A. 直播伴侣
首先介绍的是快手的直播伴侣。直播伴侣支持多终端(PC、iOS、Android),以及多种模式的投屏,支持超清、高清和标清多档位的推流。这些和虎牙、斗鱼等专业的游戏直播比较类似。
此外,快手还有丰富的主播工具,例如语音播报、主题挂件、竞猜、榜单等,使得快手直播伴侣有一个非常丰富的产品形态。
B. 超高密度直播转码集群
为了保证清晰度,游戏场景的原始推流码率一般都比较高,分辨率要求达到1080p@60fps。但如果让每个观众都看蓝光或超高清码流,很多用户会由于网络带宽不足而播放卡顿,或者手机性能不足导致的解码渲染卡顿。另外,带宽成本将非常高。同时,随着算法的演进,在转码过程中应用窄带高清算法可以达到即降低码率又提升质量的效果。而由于云厂商普遍采用软件转码的解决方案,成本非常高。在快手如此体量的前提下,自建基于硬件转码集群就变得非常重要且迫切。
在转码方案的选型上,我们做了大量的调研与实验,并与业界的最佳实践做了很多细致对比(感谢Twitch沈悦时博士提供的经验分享)。如下图所示,可以看出,各种方案均有自己的优缺点。
总体来说,软件方案质量最好,成本非常高;基于ASIC或FPGA的方案,转码质量目前无法达到我们的要求;基于GPU的方案,虽然画质比软件略差,但有高密度、低成本、产品方案成熟的优点。
经过多方权衡,快手最终选定了用GPU的方案。这时又面临GPU方案的二选一:Nvidia VS. Intel。在当时,Nvidia的P4和Intel的Xeon E3是两个可选的方案,经过数轮优化后,对比下来,二者转码质量相差并不大。但由于我们的源站建设在云端,云厂商有很多的P4卡储备用于AI计算。而由于E3在云端主要做媒体处理,AI方面用的并不广泛,虽然它成本比较低,但云厂商都是没有储备的。因此我们的P4方案是采用云厂商提供的设备,但E3的方案则需要在自建IDC部署,这样就需要我们的IDC到云厂商有一个大容量的专线,专线的稳定性、容量这些都是需要考虑的因素。经过仔细的评估,快手决定采用E3 P4的混合方案,兼顾质量、成本和稳定性。
当然,这些方案并不是拿过来就可以直接用的,结合快手的业务特性,我们和Intel以及NVIDIA一起联合做了非常多针对性的优化。下图是我们上线后的一个简单情况:转码的峰值是两万路以上;成本上只有软件成本的四分之一;画质和X264的Medium相当;稳定性方面,采用了混合的方案,有完善的降级(fallback)机制。例如,在硬件问题上,无论是单卡故障、机房故障、还是专线故障,都可以几乎无缝的降级,确保线上的用户体验不受影响。
目前快手也在调研下一代硬件转码解决方案,其中IntelE3的下一代产品还在开发中,NVIDIA T4的HEVC的转码质量较好,但是密度还不够高,成本也达不到我们目前的要求。FPGA、ASIC方案的编码质量需要进一步优化。我们也会在硬件转码解决方案领域做持续的关注,包括对结合AI和图像处理能力,对下一代编码标准的支持,为下一代快手的直播转码系统做出最优的一个选型。
C. 多码率自适应
有了多路转码流,我们就可以在端上采用多码率自适应技术,基于用户的终端设备、网络状态等,动态选择最佳的码率档位,在观看的流畅度和清晰度之间,取得最佳的tradeoff。
与点播场景不同,直播的多码率面临着很多新的挑战,例如直播流是实时产生的,在带宽估计方面会面临数据不足引起网络空闲导致估不准的问题;为了保证直播的实时性,客户端的缓存一般也比较小,从而对网络的抗抖动能力不如点播场景;此外,快手的直播推流是基于KTP的,支持推流的动态码率、帧率自适应,而这些信息在客户端是不可见的,当客户端发生卡顿时,难以判定是因为推流卡顿还是拉流带宽不足导致。另外,传统的直播多码率自适应是基于HTTP切片分发的方案(如DASH/HLS),主要问题是延时大、国内CDN支持不好、可扩展性差。
为了应对这些新问题,不同于DASH和HLS,快手提出了基于流协议的多码率自适应架构,从而大大降低端到端延迟。此外,为了做到网络感知上的千人千面,我们的传输算法团队还设计了多状态、多目标的码率自适应策略,从而为不同的用户提供不同清晰度、延迟、流畅度的自适应策略。我们将在LVS2019深圳站为大家更详细的介绍这个协议的研发和上线历程,欢迎感兴趣的同学关注一下。
以上便是到目前为止,快手直播平台的演进之路。
我们的团队目前在传输算法、音频算法、实时音视频通信、下一代转码平台等方面持续深入优化。例如在传输算法方向,我们的团队今年与清华大学合作发表了三篇CCF-A类高质量学术论文,包括与清华大学媒体所合作发表了两篇ACM MM (ACMInternational Conference on Multimedia),利用深度学习,共同探索了基于质量感知的自适应问题和直播调度;以及与清华网络所合作的期刊TON (IEEE/ACM Transactions on Networking),以控制论与排队论为理论基础,研究了多码率自适应问题,优化观看流畅与清晰度。另外,对于快手孵化的新业务,如小游戏、A站、海外产品等,我们建立了直播中台,对新业务输出成熟先进的直播解决方案。
三、 快手直播平台的未来发展
最后简要聊下5G AI下直播技术趋势,抛砖引玉。在5G网络下,带宽越来越高,延迟越来越低;在硬件基础设施上,机器的算力越来越强,基于AI的各种算法也越来越强大,可以支撑更复杂的算法上线。因此,基础体验会有一个大幅度提升,在快手上将会看到更清晰,更流畅的直播。这一方面源于编解码技术的不断演进,譬如说H264到H265,再到现在正在标准制定阶段的H266;另一方面,AI技术和视频处理以及编解码的结合,让视频主观质量上提升更多;最后是网络条件的改善,包括基础设施的改善以及5G时代的到来,同时更多先进的算法和协议的落地,都将提升直播的体验。
除了现有传统的直播方式外,5G AI会给直播带来更大的想象空间。例如快手最近线上的一个功能:虚拟形象3D直播。之前这类直播或是一些电影拍摄中,都是使用一些可穿戴设备,模拟一个人的动作,加上配音演员实现类似的效果。现在快手已经通过技术摆脱了对设备的依赖,通过一个普通iPhone的摄像头或者PC电脑的摄像头,就可以实现对人脸、表情和肢体的识别,做出更多拟人的动作,对二次元以及不愿意露脸的主播有一个比较大的体验提升。
同时,我们也在自研通过声音转换技术摆脱对声优的依赖,使得快手任何一个人的声音都可以转化到目标的声音上。我们也希望这些技术能早日成熟,提升整个虚拟直播的体验。
5G的时代,泛在的无线网络可以让人们随时随地看电视。快手也在不断进行这方面的探索。今年的“十一”阅兵,快手进行了7路特殊视角的70小时直播,总观看人次超过十亿。我们让更多的用户透过小屏幕感受国家正在发生的事情,正如我们最新的广告语“在快手,看见真实的中国”。
以上便是我演讲的全部内容,希望与大家在5G AI的技术浪潮中共同探讨直播架构的后续演进。