听程序员GG讲直播那些事

2016年,直播大火。涌现出了一个个直播产品,映客、花椒、斗鱼……嗅到了风口的气息,一些视频网站在线教育平台也开始引入直播。作为一名敬业的产品汪,虽然不负责直播业务,但也对直播颇有兴趣,幸得wuli程序员男票也从事直播相关的工作,便有幸一探直播的真相。

1、直播流示意图

直播流示意图

直播间:视频采集端,包含一些直播设备。以在线教育直播为例,直播间是老师录制课程的地方。 源站:接受直播间传送的视频流,并进行存储和转发,由多台服务器组成。源站相对于CDN来讲,是源头,故而称之为源站。 CDN:主动向源站获取视频流,并进行存储和转发。CDN在这个直播的整个环节中扮演的角色类似于计算机存储系统中的缓存。 用户:接收CDN传送的视频流,观看直播。

2、直播间-源站的关系

(1)直播间主动向源站传输视频流,这个动作叫推流。

那么问题来了——直播间是如何确定把视频流推送到哪台服务器上?

直播间可以配置服务器对应的ip地址。比如:直播间1配置了服务器A和服务器B的IP地址,那么当直播间1产生视频流的时候,会把视频流同时传输到服务器A和服务器B上。

(2)直播间与源站之间常用的传输协议:rtmp协议,hls协议。

传输协议是什么鬼?举个不恰当的例子,传输协议相当于是翻译媒介。一个日本人,和一个俄国人,如果日本人讲日语,俄国人讲俄语,那么他们是无法沟通的。但如果他们有一门共通的语言,比如英语,在遵从英语的语言规范的前提下,他们是能够进行沟通的。传输协议就是直播间与源站之间的共通语言。

RTMP是Adobe公司的流媒体传输协议,普通网络用户均可使用,包括非IOS平台用户。

HLS是IOS平台下的流媒体传输协议。

3、用户与CDN

用户在终端进行观看直播的操作,相当于向CDN发送获取视频流的请求。

那么问题来了,用户终端发起获取视频流请求的时候,是如何确定向哪个CDN获取?

在用户发起获取视频流请求的时候,出于传输效率的考虑,用户与CDN之间有一套路由算法(这个算法一般是由CDN设定的)。比如这样一个场景,XX公司/XX产品的直播间在北京,用户在西安。当这个西安用户发起获取直播流的请求时,XX公司/XX产品在西安、上海、南京、广州、太远都有CDN,那么路由算法会告诉用户终端,该获取哪个CDN,比如获取西安CDN能够获得较高的传输速率,那么该用户的终端就会向西安CDN获取视频流。

4、CDN与源站

当用户向CDN发送获取视频流的请求之后,CDN会向对应的源站服务器获取视频流,这个动作叫做“回流”。

那么问题又来了,CDN如何知道向哪个服务器获取视频流?

用户终端向CDN请求获取视频流的时候,在传送请求的时候,会告诉CDN向哪台源站服务器获取视频流,会在传送的数据中含有所获取源站服务器的IP信息。我们通常所说的切换线路,指的就是用户在向CDN发送获取视频的请求时,更换了获取源站服务器的IP信息。

5、补充——为什么需要CDN?

解决带宽问题。用户对直播的播放流畅度、互动实时性有较高的要求。对于这样的性能要求,需要通过提高带宽来解决。如果直播服务提供者的带宽非常高,那么源站服务器的数据传送效率就大大提高,流畅度和实时性是完全能够满足的。但考虑到成本的问题,服务提供者一般会选择使用CDN,源站服务器的数据传送到CDN,通过CDN进行存储转发。我们可以想象,如果用户直接向源站服务器请求获取视频流,会导致源站服务器压力过大,毕竟在大多场景下,直播的观看人数是比较多的,而通过CDN的存储转发可以降低源站服务器的压力。

 

本文系人人都是产品经理团队@张婷 原创发布,未经许可,不得转载。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处: 听程序员GG讲直播那些事