在 2021 LiveVideoStackCon 音视频技术大会上海站,聚焦 “轻端重云和边缘架构新模式” 专场,阿里云视频云的 RTC 传输专家杨成立(忘篱)带来 “基于边缘云原生的 RTC 服务架构演进” 的主题演讲,与行业伙伴分享视频云在 RTC 服务架构演进之路上的挑战和经验,以下为完整的演讲内容。
后端传输网络是 RTC 系统的核心能力,比如阿里云的 GRTN、声网的 SD-RTN 等。本文介绍了阿里云视频云如何不断改进 RTC 架构,扩展 GRTN 网络,并基于云原生技术获得云的强大能力。
个人介绍大家好,我是杨成立(忘篱),目前在阿里云负责 RTC 的传输网络,之前在蓝汛 CDN 负责直播的传输网络,这十年左右一直在做视频的后端服务,也是开源视频服务器 SRS 的作者,SRS 目前是全球 Top1 的开源视频服务器。
后端服务都架构在云上,CDN 的趋势也是边缘云,这是因为云计算成为各种服务的基础设施,当然也包括视频的后端服务。开发者可以便捷的直接使用云厂商的 SDK 和视频云服务,也可以使用开源方案在云上构建自己的系统。
我正好活跃在视频开源和云服务这两个领域,一直都有朋友询问这两个的差异,借这次机会正好分享下这个话题,希望通过这次分享,大家可以了解,从一个开源服务器,到可以提供服务的商业系统,到底有哪些路要走。
RTC 服务介绍因为有些朋友不是做服务器的,我还是先介绍下 RTC 服务是什么吧。
直播经过这些年的发展,大家都理解需要后端服务,比如 OBS 推流,是不能直接推给播放器的,而是经过 CDN 转发,CDN 就是直播的后端服务了。
RTC 是大不相同的,比如 WebRTC 本身设计是通话,通话场景大部分时候都是一对一的对话,所以 WebRTC 设计了多种传输方式,比如直接 P2P、通过 STUN 转发、通过 SFU 或 MCU 转发。
如果只是跑 DEMO,那么不用 RTC 服务器,直接 P2P 也是可以跑起来的。真实线上,肯定是要经过服务器,现在使用最广的是 SFU 转发。主要原因如下:
P2P 打不通:有些网络是对称 NAT,两个客户端在各自的内网无法通过 P2P 打通,就必须使用服务器中转流。
跨网远距离传输:比如跨国传输,或者跨运营商,客户端直接 P2P 就算能连通,效果也不好,如果经过服务器可以优化传输线路。
会议转直播:如果需要对媒体进行处理,比如将 RTC 转直播,广播给更多观众,就需要转码和转协议,这也必须要服务器处理。
录制精彩片段:目前的录制和剪辑等内容的处理,在互联网上还是 RTMP 对接比较多,将 RTMP 流送到录制或剪辑系统。
不同客户端网络状况不同:有些客户端网络好,有些差,通过服务器可以精确计算不同客户端的网络情况,给客户端传输不同的质量的流。
兼容老客户端和协议:线上客户端的版本非常多,随着迭代,可能支持的协议也不一样,需要服务器做兼容处理。
各家云厂商都有自己的后端服务,比如阿里云的 GRTN,声网的 SD-RTN 等等。实际上传输网络并不等于传输服务器,而是一个传输的系统,包括调度、路由、协议处理、发布和维护、问题排查、数据分析等等。
AliRTC(阿里云 RTC)的传输网络,传输协议使用 GRTN,除了 GRTN (CDN) 的网络,我们还扩展实现了 GRTN (Tenfold);GRTN (Tenfold) 补充了 BGP 专线、ENS、专有云网络、第三方云支持 K8S 的云网络等,适应多种不同场景的传输要求。
其中 GRTN (Tenfold) 就是基于 SRS 做的,增加了很多能力,有些已经反馈给了 SRS 社区。
为何选择 SRS下面介绍下 SRS,以及我们为何要选择 SRS。
视频服务器的主要问题是:门槛高、领域广、更新快,开源和云服务不同步。
门槛高:由于视频的技术栈很深,信号处理、编解码、传输、客户端平台,每个方向都有很深的技术栈,必须要有专门的视频服务器。业内知名的 Nginx 本质上并不是做视频的,Web 和视频差别非常大。
领域广:直播和 RTC 是互联网成规模的应用,其实还有监控和 IoT 发展也非常快,公有云、专有云、边缘云多个云的情况也不同,我们需要一个跨视频领域的服务器。Janus 等专门的会议服务器,在超大规模上有结构性的问题(或者说这是直播要解的问题,所以 Janus 不需要解)。