QuestMobile《2020 中国移动直播行业“战疫”专题报告》数据显示,疫情期间,看直播成为休闲娱乐、获取资讯、上课学习的主要方式,一些高度依赖线下场景的行业也纷纷通过直播进行自救,线上转型直播卖货,政府部门也通过直播形式进行招商、推广农产品等。电商平台在疫情期间加大对直播的支持力度,为滞销农产品直播、云卖车、云卖房、实体店直播卖货提供平台和支持。
直播破圈加速进行,除了各类网络红人外,国家博物馆、知名酒吧、景点等线下主体为网民提供线上逛博物馆、云蹦迪、云旅游服务,吸引了大批年轻用户参与。直播不再是线上娱乐内容的生产工具,而是与商业业务场景结合越来越紧密,逐渐演变为基础的业务工具。
直播的及时性和互动性让他成为信息触达、互动沟通的新媒介,但直播的实时互动效果够好了吗?传统的直播技术延迟非常大,从观众评论到看到主播给出反馈一般要在 5 -10 秒以上。
我们来看下几个典型的尴尬场景:
- 在线教育,学生提问,老师都讲到下一个知识点了,再返回来回答。
- 电商直播,询问宝贝信息,主播“视而不理”。
- 打赏后迟迟听不到主播的口播感谢。
- 在别人的呐喊声知道球进了,你看的还是直播吗?
高延时影响了直播互动体验,阻碍了直播在一些场景的落地,特别在电商直播,直播间的评论提问是观众和主播互动的一个重要手段,主播的实时互动反馈对直播间的活跃度和交易达成至关重要。
使用常规的直播方案(rtmp 推流,FLV/RTMP/HLS 播放),延迟大概在 5 -10 秒左右,这些延迟主要来自以下几个方面:
- 推流侧 buffer,这部分来自于画面从传感器模数转换到音视频编码以及输出画面到网络的 buffer。最主要的还是来自于编码的延迟,这与推流软件的编码参数设置有关,如是否有 B 帧,帧参考关系设置,压缩性能等。以 OBS 为例,当输出设置如下图时,延迟达到最低(1s 以内):
不过,上图的配置,在 MAC 和 windows 平台上的效果也不一样,mac 平台的延迟在几百 ms,而 windows 可以做到 50ms(实际案例数据)。推流网络方面,主播的推流网络一般都比较稳定,有的会拉专线,质量比较可靠。
- CDN 链路延迟,这分为两部分,一部分是网络传输延迟。CDN 内部有四段网络传输,假设每段网络传输带来的延迟是 20ms,那这四段延迟便是 100ms;此外,使用 RTMP 帧为传输单位,意味着每个节点都要收满一帧之后才能启动向下游转发的流程;CDN 为了提升并发性能,会有一定的优化发包策略,会增加部分延迟。在网络抖动的场景下,延迟就更加无法控制了,可靠传输协议下,一旦有网络抖动,后续的发送流程都将阻塞,需要等待前序包的重传。
- 播放端 buffer,这个是延迟的主要来源。公网环境千差万别,推流、CDN 传输、播放接收这几个环节任何一个环节发生网络抖动,都会影响到播放端。为了对抗前边链路的抖动,播放器的常规策略是保留 6s 左右的媒体 buffer。
阿里云低延时直播(Real-time Streaming)
传统的直播技术,已经不能满足对互动要求更高的直播要求,为此,2019 年阿里云与淘宝直播共同推出超低延时直播服务 RTS(Real-time Streaming),该方案基于 WebRTC 实现,采用 UDP 传输协议打造,实现可以承载大规模并发,端到端延时 1 秒内的低延时直播体验。由于 RTS 服务部署于阿里云 CDN 节点,复用 CDN 的节点和网络资源,在接入成本、节点覆盖、承载能力上实现了平衡。经过一年多的不断磨炼,整体体验和服务也更为完善和成熟。
阿里云低延时直播的技术架构:
从传输的细节来看,如下图所示:
上图与现在直播系统的架构图并无大的区别,改变的地方在于客户端到 CDN 节点进行播放的链路,由 RTMP 协议切换为 RTP 协议,TCP 协议换成 UDP 协议。RTS 服务进行了服务与节点双重升级,同时针对全链路直播指标进行监控和针对性优化,以及通过智能调度系统以及网络拥塞、抗弱网优化、缓冲策略等进行一系列底层核心技术优化,实现 RTP over UDP 更好地对抗公网的丢包,使得播放器上收到的流质量相对 RTMP over TCP 更加稳定,这样一来,播放器就可以降低 buffer,不用像以前那样设置 6s 的 buffer 来对抗抖动,现在只需要设置 1 秒左右就 OK 了,整体延时可以控制在 1 -1.5S 左右。
如何接入 RTS 服务:
RTS 目前提供两种接入服务:
1、基于 WebRTC 开放协议升级网络模块
对于自研播放器或者使用开源播放器的用户,阿里云提供与标准 WebRTC 协议对接方案,在现有的直播业务新增一个 RTS 播流域名,一个推流两种方式拉流。推流侧不用改造,仅升级播放器网络模块,拉取超低延时流播放,这样让底层网络对接更透明开放,客户端自主可控。
上图是普通播放器的架构。播放器使用 FFmpeg 打开网络连接,读取音视频帧后会放入播放器缓冲,之后会依次对它进行解码、音视频同步及渲染。
接入低延迟直播系统后,整体架构如图下面部分:FFmpeg 增加低延迟直播插件支持私有协议;将播放器的缓冲设置为 1 秒,FFmpeg 输出的音视频帧直接送入解码器进行解码,然后同步,渲染。
另外,RTS 网络 SDK 为播放器接入阿里云低成本多协议低延时网络传输基础设施提接口。该 SDK 具有非常友好的 API,非常稳定的设计,在音视频同步,秒开,流畅度等指标也做了很多优化。API 设计上提供了 ffmpeg demux 插件,可以像调用其他 ffmpeg demux 插件一样被集成进应用程序,另外也提供非 ffmpeg 接口。
2. 集成阿里云 RTS 播放器
使用第二种方法,可以更加快速的实现 RTS 服务,即在现有的直播业务新增一个 RTS 播流域名,然后集成阿里云播放 SDK,用户端通过不同 URL 参数播放器自动识别,即可实现低延时直播服务。阿里云播放器是一个通用的播放器 sdk,除了支持点播和直播的播放功能外,深度融合视频云业务,如支持视频的加密播放、安全下载、清晰度切换、短视频等业务场景,为用户提供简单、快速、安全、稳定的视频播放服务。
结束语
经验证,阿里云 RTS 直播核心指标表现优异:相同卡顿率下,RTS 直播延时降低 75%,并且在相同网络延时和丢包率指标下,RTS 直播播放成功率、卡顿率、秒开率等指标表现均有所提升,大幅优化直播体验。RTS 已经在淘宝直播中大规模应用,降低了淘宝直播的延迟,提升了用户的互动体验,经过线上验证发现,低延迟直播对电商直播的成交有明显的促进作用,其中 UV 转化率提升 4%,GMV 提升 5%。目前在一些 教育行业、电商 、 游戏直播 等领域,已经有众多知名客户接入 RTS 服务并上线。