《快速搭建不同场景的直播系统》 阿里云智能技术专家 熊金水
直播场景需求的多样性
直播的历史悠久,出现过各种各样的直播业务场景,目前比较火爆的业务场景主要有三个:
第一个场景,直播带货。直播带货是在疫情期间出现的一个风口,大家在各种各样的直播平台上可以看到很多流量明星出来带货,成交金额非常的惊人。
直播带货的技术挑战除了不卡顿、不掉线和高并发以外,还出现了低延时的要求。低延时是从主播看到观众的文字留言,到观众看到主播的视频回复。如果这个过程非常长的话,观众可能会觉得自己被冷落了,从而降低了购买欲望。
第二个场景是主播 PK 的场景,主播 PK 的场景是主播与主播之间连麦,这是一个比较典型的 RTC 的场景,要求延时在 200 毫秒左右,对编码器和传输算法的要求是非常高的。
第三个场景是多人互动的场景。在在线游戏、在线教育等场景,有着非常广泛的应用。这个场景的主要挑战在于通过云端的合流做特效玩法。
当然,不同的直播业务场景也有通用的技术挑战。
比如说主播和观众他们都处于不同的网络下。甚至是同一个人,他在不同的时间,他的网络环境也是不一样的。这个对网络自适应的要求非常高,另外主播和观众使用的手机的能力也是不一样的,这需要做大量的适配工作。
阿里云直播技术架构
阿里云的技术架构包括三个方面。
第一个方面是主播端。主播端包括 RACE 前处理、窄带高清编码以及传输算法采集、采集的机型适配工作。特别是国内的手机厂商做了大量的安卓机型定制,导致系统碎片化特别严重。
第二个是云端。云端包括 CDN 的转发网络、云上窄带高清转码、合流服务以及智能审核等服务功能。云端的 CDN 转发网络是基于阿里云全球 2800 多个 CDN 的布点,从成本和质量的两个角度权衡,选择合适的转发网络。
云上的窄带高清转码,除了端上使用的策略以外,云上还有一个更大的自由度,那就是如何使用特定的硬件做低成本的异构解决方案。云上的合流服务主要是做特效玩法、插播广告、加水印等功能。
最后像智能审核、视频 DNA、水印、录制、时移等功能,也是阿里云视频云云上的基础能力。
观众端则主要包括两种播放器。一种是常规的普通播放器,这种播放器是大家通用的 rtmp ,flv、 hls 这些协议,通常它们的延时会在 3 秒以上。第二种是阿里云视频云特有的低延时播放器( RTS ),可以在不损失卡顿率的情况下做到一秒左右的延时。
直播连麦场景
接下来介绍连麦场景,这个场景是主播端与连麦粉丝之间的通信,主要包括两个方面。第一个方面是基于 UDP 的传输协议。第二个方面是 SFU 与合流服务。
UDP 的传输协议。核心在于端云协同一体的网络自适应算法。网络自适应算法包括带宽估计算法。带宽估计算法是整个网络自适应的起点与核心。除了目前行业通用的解决方案,阿里云还针对性的做了大量的优化。
其次是带宽分配策略。在带宽估计的基础上,客户端以及云端都需要做带宽分配。在客户端编码端,除了编码还有冗余传输,如 FEC、Nack 等都需要在保证画质清晰的情况下,不能因为 FEC、Nack 分配到的带宽太少,而导致卡顿。另外 FEC、Nack 适用不同的网络场景,也需要根据不同的网络场景使用不同的分配比例。
当然,编码器 FEC、Nack 这些模块在分得了自己的码率以后,如何提高码率的利用率,也是各个模块需要充分考虑的。上面的自适应算法都是在给定网络条件下做的自适应。为了提高网络环境本身的质量,阿里云有具有得天独厚的全球布点的优势以及就近接入的能力。
第二个是 SFU 与合流服务。直播不同于 RTC 的场景。不仅需要全球覆盖的 SFU 的节点,它还需要高性能,具有丰富玩法的合流节点,以及端合流,云合流灵活可配置。
端合流需要考虑的是不同端具有的不同能力,包括计算能力和上行的网络能力。
云合流则需要尽可能的挖掘云服务器的计算能力。支持更多的人连麦、支持更多的特效玩法。
如何快速集成系统?
对于希望快速搭建端到端直播系统的客户,可以选择完整接入,包括主播端推流 SDK、云端 OpenAPI、观众端播放 SDK。
客户在自己的云上只需生成推流 URL ,实现连麦相关业务,并做 URL 的通知。连麦时,如果客户选择云合流,只需要调用一个 OpenAPI 的接口。
推流端客户只需要通过一个接口启动本地音视频设备,然后从云端拿到推拉流 URL,调用推拉流接口就可以了。
观众端同样,客户只需要从云端拿到拉流 URL ,并调用标准播放器 SDK 的开播接口即可。
对客户已有的直播系统,也可以通过集成阿里云视频云的原子能力,快速优化自己的直播系统。
下面分别举三个例子。
第一个例子是主播端可以集成 RACE 前处理库,这个 RACE 前处理库同时兼容 iOS、Android 等主流机型以及中低端的部分机型。
第二个例子是云端客户可以单独集成阿里云的合流服务,我们的合流服务提供对外的 OpenAPI ,支持 RTC 拉流、RTMP 拉流、RTS 拉流、点播源拉流、拉流布局可配等特性。
同时,播放端也可以单独集成低延时播放插件,内嵌到客户自己的播放器当中。
效果举例
云端的窄带高清编码。阿里云视频云的窄带高清编码可以在同等画质的情况下比 x264 码率节省 20% 以上。
观众端集成了阿里云视频云的超低延时播放器以后,可以把端到端的延时控制在 1 秒左右。
以上所有的成果都是阿里巴巴多个音视频团队合作的结晶。在淘宝直播、钉钉直播等超大规模的直播业务场景下,得到了充分的验证。欢迎广大客户集成试用。
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。