【摘要】
随着互联网视频应用的普及,各行各业对直播的应用需求越来越多,作为一名流媒体行业的从业者,亲眼目睹了视频行业的发展轨迹。
当前,全球遭受新冠疫情的冲击,导致视频通信的需求量大增,视频直播、视频会议成了人际交流的必备手段,各种视频云平台如雨后春笋般地成长起来。
但是,当前有很多对实时性和交互性要求高的应用场景,现有的直播云平台仍然无法满足用户需求,比如在线游戏(云游戏、在线博彩、互动游戏等),在线教学(互动课堂、VR直播课堂),手术直播(多地联动),应急指挥(抢险救灾、指挥作战),远程控制(无人驾驶车辆控制、机器人控制)等。
对于这类应用来说,它对于视频的延时是非常敏感的,往往差之毫厘,失之千里。所以,这些应用场景下必须采用低延时的直播解决方案。
然而,当前主流的直播云平台主要采用如下几种技术实现方式:
1. 源端采用RTP/RTSP/RTMP等协议推流给流媒体服务器,流媒体服务器再通过RTMP/HTTP/HLS/UDP等协议进行分发,终端通过RTMP/HTTP/HLS等协议接收。在这种情况下,端到端延时比较低的方案是端到端采用RTMP协议(延时在3秒左右),然而不支持终端以H5方式播放。因此,行业内普遍采用HLS协议在终端接收(多终端兼容),但是延时通常在10~30秒。
2. 源端采用RTP/RTSP/RTMP等协议推流给流媒体服务器,流媒体服务器再通过RTMP/HTTP/HLS/UDP等协议进行分发,终端通过WebSocket协议接收,然后自主实现H5端的软件播放器解码。这种方案比第一种方案延时更低,端到端可以控制在1秒以内。缺点是终端需要采用软件播放器解码,对于CPU性能比较高的PC终端来说,最高只能实时解码720P的视频,视频编码方式只能采用MPEG-2或者H.264 Baseline,无法支持更高的编码标准。对于手机终端来说,最高只能实时解码540P的视频,而且工作时手机功耗很大,电池使用时间大大缩短。
基于以上情况,我们经过多年研发完成了一套适用性更广的解决方案,该方案的实现方式如下:
源端:
采用H.264/AAC的视频编码技术,基于硬件编码器进行实时编码,然后基于UDP协议进行直播推流,最大程度降低编码延时;
服务器端:
基于可靠的UDP协议进行数据分发,最大程度降低数据分发的延时,同时基于异步I/O模式来有效提升服务器端的并发负载能力。
流媒体服务器程序采用C语言编码实现,支持多核多线程,同时采用异步I/O模式,因此具有很高的运行效率,单颗Intel E5系列 10核CPU可以支持2000并发用户访问。
终端:
基于H5标准自主实现低延时播放器,有效控制缓冲区大小,通常只缓冲一帧的图像数据,并调用本地的硬件解码器进行视频解码,从而实现快速实时播放的目标。
由于终端播放器完全符合H5规范,因此可以在PC、Android终端、iOS终端上正常运行。
综合以上设计,该方案在现有的互联网环境中运营的实际表现如下:
1. 在高带宽低延时的专网环境中(网络延时低于1ms),该直播平台的端到端延时在300ms以内;
2. 在单一运营商的广域网环境中(网络延时低于10ms),该平台的端到端延时在500ms以内;
3. 在高带宽的混合网络环境中(跨运营商的网络延时低于20ms),该平台的端到端延时在800ms以内;
当前,该技术已经在云游戏、在线教学、应急指挥、实时监控等多个领域得到了大规模应用检验,非常稳定。
然而,在有些应用场景下用户端带宽受限(比如用户使用4G等移动网络),因此后期还需要对该方案做进一步优化升级,主要技术方向是采用可伸缩编码技术和H.265/AV1等更高效的视频编码技术,从而给消费者带来更好的收视体验。
技术交流:
QQ(860861001)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。