在快手,并发在线的直播间数量和观众数量都是非常高的。这是由于快手一直坚持的普惠原则,在分发策略上对中小主播的侧重,再加上用户间长期积累的信任关系,使得平台活跃主播数量远远超过其它平台;其次,快手的业务场景是多样性的。多样化的业务,包括连麦、PK、聊天室、KTV、游戏直播等,覆盖了目前音视频技术的各个主流细分场景。此外,快手覆盖的用户群非常广,用户遍布城镇和乡村,有着多种多样的复杂网络环境,这对于直播清晰度和流畅度提出了非常大的挑战。为了应对多样化的业务场景和复杂的网络环境,保证用户直播的体验,快手对直播系统做了大规模的投入和优化,在架构、自研协议、算法等几个方面持续迭代。
基于以上这些考虑,快手迫切的需要自研更适合快手业务和技术形态的直播源站架构与私有传输协议,结合自研算法的落地,为用户提供高品质的直播体验。
以下通过快手直播技术平台发展的三个阶段,详细介绍快手直播平台的演进之路。
二、 快手直播平台的技术演进
1. 快手直播平台1.0
快手直播平台的1.0着重解决两个短板。一个短板是快手无法使用自研的推流协议,在这方面快手自建了源站,用自己的私有协议KTP进行推流。基于自建的源站,快手拥有了CDN调度的能力,这样对容灾和风险的把控就会非常强,解决了第二个短板。
A. 源站的稳定性设计
快手对稳定性要求非常高,自建源站必须有高可靠、高并发和易迁移的特性。高可靠主要体现在必须有一定冗余,而且可以自动且无痛降级到CDN,确保线上服务在各种异常情况下的稳定性,如专线故障、流量突增、单家CDN质量下降等;高并发主要体现在支持单源站扩容,一个源站可以快速稳定扩到一倍以上的规模,还支持水平扩展,能够支持快速的新建一个源站,这样对房间的支撑能力和分发能力都有高并发的扩展,可以很好的支持各种突发流量;易迁移则体现在快手是第一家基于兼容多家公有云基础平台设施的自建源站,可以很好的规避各种风险,包括稳定性和质量风险、商务风险等,可以同时兼容多家公有云平台的基础设施。
C. CDN智能调度
自建源站赋予了快手CDN调度的能力,即各家CDN都需要来快手自建源站进行回源拉流。快手源站通过控制各CDN的流量比例,在质量和成本间取得最好的折衷。然而,快手体量庞大,需要同时使用多家CDN,而各家 CDN 的质量、价格参差不齐,以及经常有一些不可预知的突发状况,因此,通过人工调度的方式,显然是无法接受的。快手通过自研智能CDN调度系统,精确捕捉 CDN 与用户的动态变化,从而更合理地利用CDN 资源,且大大降低观看故障时长,节约大量人力监控和维护成本。
A. 音频优化
在音频处理上快手除了有自己的3A算法外,还做了针对高音质的回声抵消和去噪。另一方面,快手也具备KTV的功能,全民K歌、唱吧类似的混响效果都完全满足,同时部分效果针对不同K歌人群做了专业级调校的音效。
音频算法方面,快手设计了自适应码率算法,对主包和冗余包在不同网络下的配比、切换的时机等做了精细的调整,在jitter控制层面,支持音乐场景和通话场景下两种jitter模式无缝切换的双jitter模式。
另一个需要考虑的问题是直播与连麦的平衡,这依赖于方案的选择。一类PK连麦使用的是第三方的解决方案,倾向于服务端混流的方式,另一类采用的是主播端混流的方案,快手采用的后者,也就是主播端混流方案。
在服务端混流,一个问题是成本比较高,可扩展性也差。另一个是在快手的业务场景中,直播连麦发生切换时,体验不佳。在主播端合流,客户端需推一路延迟可以较大的直播流,同时推一路低延迟的实时连麦流。此时,直播和连麦两路流天然的形成了竞争,如何平衡二者的关系,也直接影响着直播与连麦的质量。在KTP中,通过实时动态的交换直播流与连麦流的网络状态信息与流控状态信息,从而联合作出最佳的决策。
A. 直播伴侣
首先介绍的是快手的直播伴侣。直播伴侣支持多终端(PC、iOS、Android),以及多种模式的投屏,支持超清、高清和标清多档位的推流。这些和虎牙、斗鱼等专业的游戏直播比较类似。
此外,快手还有丰富的主播工具,例如语音播报、主题挂件、竞猜、榜单等,使得快手直播伴侣有一个非常丰富的产品形态。
在转码方案的选型上,我们做了大量的调研与实验,并与业界的最佳实践做了很多细致对比(感谢Twitch沈悦时博士提供的经验分享)。如下图所示,可以看出,各种方案均有自己的优缺点。
总体来说,软件方案质量最好,成本非常高;基于ASIC或FPGA的方案,转码质量目前无法达到我们的要求;基于GPU的方案,虽然画质比软件略差,但有高密度、低成本、产品方案成熟的优点。
当然,这些方案并不是拿过来就可以直接用的,结合快手的业务特性,我们和Intel以及NVIDIA一起联合做了非常多针对性的优化。下图是我们上线后的一个简单情况:转码的峰值是两万路以上;成本上只有软件成本的四分之一;画质和X264的Medium相当;稳定性方面,采用了混合的方案,有完善的降级(fallback)机制。例如,在硬件问题上,无论是单卡故障、机房故障、还是专线故障,都可以几乎无缝的降级,确保线上的用户体验不受影响。
目前快手也在调研下一代硬件转码解决方案,其中IntelE3的下一代产品还在开发中,NVIDIA T4的HEVC的转码质量较好,但是密度还不够高,成本也达不到我们目前的要求。FPGA、ASIC方案的编码质量需要进一步优化。我们也会在硬件转码解决方案领域做持续的关注,包括对结合AI和图像处理能力,对下一代编码标准的支持,为下一代快手的直播转码系统做出最优的一个选型。
与点播场景不同,直播的多码率面临着很多新的挑战,例如直播流是实时产生的,在带宽估计方面会面临数据不足引起网络空闲导致估不准的问题;为了保证直播的实时性,客户端的缓存一般也比较小,从而对网络的抗抖动能力不如点播场景;此外,快手的直播推流是基于KTP的,支持推流的动态码率、帧率自适应,而这些信息在客户端是不可见的,当客户端发生卡顿时,难以判定是因为推流卡顿还是拉流带宽不足导致。另外,传统的直播多码率自适应是基于HTTP切片分发的方案(如DASH/HLS),主要问题是延时大、国内CDN支持不好、可扩展性差。
为了应对这些新问题,不同于DASH和HLS,快手提出了基于流协议的多码率自适应架构,从而大大降低端到端延迟。此外,为了做到网络感知上的千人千面,我们的传输算法团队还设计了多状态、多目标的码率自适应策略,从而为不同的用户提供不同清晰度、延迟、流畅度的自适应策略。我们将在LVS2019深圳站为大家更详细的介绍这个协议的研发和上线历程,欢迎感兴趣的同学关注一下。
除了现有传统的直播方式外,5G+AI会给直播带来更大的想象空间。例如快手最近线上的一个功能:虚拟形象3D直播。之前这类直播或是一些电影拍摄中,都是使用一些可穿戴设备,模拟一个人的动作,加上配音演员实现类似的效果。现在快手已经通过技术摆脱了对设备的依赖,通过一个普通iPhone的摄像头或者PC电脑的摄像头,就可以实现对人脸、表情和肢体的识别,做出更多拟人的动作,对二次元以及不愿意露脸的主播有一个比较大的体验提升。
同时,我们也在自研通过声音转换技术摆脱对声优的依赖,使得快手任何一个人的声音都可以转化到目标的声音上。我们也希望这些技术能早日成熟,提升整个虚拟直播的体验。
以上便是我演讲的全部内容,希望与大家在5G+AI的技术浪潮中共同探讨直播架构的后续演进。