时间: 2021-08-03 10:03:10 人气: 22 评论: 0
2016年,直播大火。涌现出了一个个直播产品,映客、花椒、斗鱼……嗅到了风口的气息,一些视频网站在线教育平台也开始引入直播。作为一名敬业的产品汪,虽然不负责直播业务,但也对直播颇有兴趣,幸得wuli程序员男票也从事直播相关的工作,便有幸一探直播的真相。
直播流示意图
(1)直播间主动向源站传输视频流,这个动作叫推流。
那么问题来了——直播间是如何确定把视频流推送到哪台服务器上?
直播间可以配置服务器对应的ip地址。比如:直播间1配置了服务器A和服务器B的IP地址,那么当直播间1产生视频流的时候,**把视频流同时传输到服务器A和服务器B上。
(2)直播间与源站之间常用的传输协议:rtmp协议,hls协议。
传输协议是什么鬼?举个不恰当的例子,传输协议相当于是翻译媒介。一个日本人,和一个俄国人,如果日本人讲日语,俄国人讲俄语,那么他们是无法沟通的。但如果他们有一门共通的语言,比如英语,在遵从英语的语言规范的前提下,他们是能够进行沟通的。传输协议就是直播间与源站之间的共通语言。
RTMP是Adobe公司的流媒体传输协议,普通网络用户均可使用,包括非IOS平台用户。
HLS是IOS平台下的流媒体传输协议。
用户在终端进行观看直播的操作,相当于向CDN发送获取视频流的请求。
那么问题来了,用户终端发起获取视频流请求的时候,是如何确定向哪个CDN获取?
在用户发起获取视频流请求的时候,出于传输效率的考虑,用户与CDN之间有一套路由算法(这个算法一般是由CDN设定的)。比如这样一个场景,XX公司/XX产品的直播间在北京,用户在西安。当这个西安用户发起获取直播流的请求时,XX公司/XX产品在西安、上海、南京、广州、太远都有CDN,那么路由算法**告诉用户终端,该获取哪个CDN,比如获取西安CDN能够获得较高的传输速率,那么该用户的终端就**向西安CDN获取视频流。
当用户向CDN发送获取视频流的请求之后,CDN**向对应的源站服务器获取视频流,这个动作叫做“回流”。
那么问题又来了,CDN如何知道向哪个服务器获取视频流?
用户终端向CDN请求获取视频流的时候,在传送请求的时候,**告诉CDN向哪台源站服务器获取视频流,**在传送的数据中含有所获取源站服务器的IP信息。我们通常所说的切换线路,指的就是用户在向CDN发送获取视频的请求时,更换了获取源站服务器的IP信息。
解决带宽问题。用户对直播的播放流畅度、互动实时性有较高的要求。对于这样的性能要求,需要通过提高带宽来解决。如果直播服务提供者的带宽非常高,那么源站服务器的数据传送效率就大大提高,流畅度和实时性是完全能够满足的。但考虑到成本的问题,服务提供者一般**选择使用CDN,将源站服务器的数据传送到CDN,通过CDN进行存储转发。我们可以想象,如果用户直接向源站服务器请求获取视频流,**导致源站服务器压力过大,毕竟在大多场景下,直播的观看人数是比较多的,而通过CDN的存储转发可以降低源站服务器的压力。
本文系人人都是产品经理团队@张婷 原创发布,未经许可,不得转载。