七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣。
结合七牛实时流网络 LiveNet 和直播云解决方案的实践,我们用八篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。
本系列文章大纲如下:
(五)推流和传输
(六)现代播放器原理
(七)延迟优化
(八)SDK 性能测试模型
在上一期的处理篇中,我们介绍了讲解编码和封装。 本篇是《解密视频直播技术》系列之五:推流和传输。推流是直播的第一公里,直播的推流对这个直播链路影响非常大,如果推流的网络不稳定,无论我们如何做优化,观众的体验都会很糟糕。所以也是我们排查问题的第一步,如何系统地解决这类问题需要我们对相关理论有基础的认识。
推送协议
RTMP
WebRTC
基于 UDP 的私有协议
1. RTMP
CDN 支持良好,主流的 CDN 厂商都支持
协议简单,在各平台上实现容易
基于 TCP ,传输成本高,在弱网环境丢包率高的情况下问题显著
不支持浏览器推送
Adobe 私有协议,Adobe 已经不再更新
2. WebRTC
优点
W3C 标准,主流浏览器支持程度高
Google 在背后支撑,并在各平台有参考实现
底层基于 SRTP 和 UDP,弱网情况优化空间大
可以实现点对点通信,通信双方延时低
ICE,STUN,TURN 传统 CDN 没有类似的服务提供
3. 基于 UDP 的私有协议
更多空间进行定制化优化
开发成本高
CDN 不友好,需要自建 CDN 或者和 CDN 达成协议
独立作战,无法和社区一起演进
传输网络
这里先回顾一下传统的内容分发网络。
1. 为什么要有内容分发网络,内容分发网络的由来
互联网起源于美国军方的一个内部网络,Tim Berners-Lee 是互联网发明者之一,他很早就预见到在不久的将来网络拥塞将成为互联网发展的最大障碍,于是他提出了一个学术难题,要发明一种全新的、从根本上解决问题的方法来实现互联网内容的无拥塞分发,这项学术难题最终催生出一种革新性的互联网服务——CDN 。当时 Berners-Lee 博士隔壁是 Tom Leighton 教授的办公室,一位麻省理工学院应用数学教授,他被 Berners-Lee 的挑战激起了兴趣。Letghton 最终解决了这个难题并开始自己的商业计划,成立了 Akamai 公司,成为世界上第一家 CDN 公司。
2. 传统 CDN 的架构
上图是一个典型的 CDN 系统的三级部署示意图,节点是 CDN 系统中的最基本部署单元,分为三级部署,中心节点、区域节点和边缘节点,最上面一级是中心节点,中间一级是区域节点,边缘节点地理位置分散,为用户提供就近的内容访问服务。
骨干节点
中心节点
区域节点
POP节点
边缘节点
3. 直播传输网络有别于传统 CDN 的痛点
流媒体协议的支持,包括 RTMP,HLS ,HTTP-FLV 等。
首屏秒开,从用户点击到播放控制在秒级以内
1~3 延迟控制,从推流端到播放端,延迟控制在 1~3 秒之间
全球全网智能路由,可以利用整个 CDN 网络内的所有节点为某一单一用户服务,不受地域限制。随着全球一体化进程不断推进,跨区域、跨国家、跨洲的直播正变为常态,很可能主播在欧美,而用户在亚洲。
天级别的节点按需增加,中国公司出海已成大势,CDN 需要更多的海外节点,如今比拼的更多的是海外节点可以快速部署,从提出节点增加需求到节点入网提供服务,需要达到一天之内,对 CDN 运维和规划提出非常高的要求。原有的月级别规划和入网满足不了先进的要求。
4. 传统 CDN 的链路路由
用户在某一区域内,则 GSLB (通常在边缘节点这一层是 Smart DNS)会把用户路由到该区域内的某个边缘节点,上一层又会路由到某个区域节点(这里的 GSLB 通常是内部的负载均衡器),最后又回溯到中心节点,中心节点会链接源站。
用户能访问的最快节点一定是该区域内的边缘节点,如果该区域没有边缘节点则最快的一定是逻辑相邻的区域内的边缘节点。
边缘节点能访问的最快节点一定是该区域内的区域节点,一定不会是其他区域的节点。
区域节点到中心节点一定是最快的,这个链路的速度和带宽都是最优的。
我们看到一旦我们把网络结构改成了网状结构,则用户的可选择链路变为:无向图的指定两点间的所有路径,学过图论的同学都知道,数量惊人。
5. CDN 的扩容
6. 回归本质:LiveNet
我们知道最早的互联网就是网状拓扑结构,后来才慢慢加入了骨干网来解决各种各样的问题,我们是时候该回归本质,拥抱下一代 Live 分发网络:LiveNet 。总结前面的讨论,我们发现 Live 时代我们需要的内容分发网络是:
对 Cache 的要求没有以前那么高
对实时性的要求非常高
对节点运维的要求高,要更智能,尽量减少人工干预
对扩容这种运维事件响应度要求非常高
去中心化,网状拓扑
全球全网调度
节点无状态,节点对等
智能运维
1)去中心,网状拓扑
2)全球全网调度
3)节点无状态,节点对等
4)智能运维
监控节点健康状况,实时下线有问题的节点
Failover 机制,保证服务一直可用
快速扩容
7.LiveNet VS P2P
【没看过瘾?直接来上免费公开课】
为了让大家能够将技术理论快速应用到实践开发中,七牛云联合慕课网、StuQ 特别制作了一期课程,专门针对移动直播应用开发,供大家学习参考。
慕课网:
StuQ :
点击「阅读原文」学习《2 小时搞定移动直播 App 开发》