【伪科普】聊一下斗鱼糊和虎牙卡的问题
前言
游戏直播(Streaming)本质上就是在线看视频,这很容易理解,整个直播的过程可以概括为视频数据的生成、编码、传递、解码、播放这几个步骤。这里面的任意一个步骤出了问题都会让观众的观看体验大打折扣,我看区里面撕了这么久斗鱼糊和虎牙卡,甚至不惜给对方扣帽子,属实没必要,所以我今天抛砖引玉,聊一下游戏直播中的一些细节。
直播经过的流程
我们了解下直播的游戏画面是怎么被捕捉的。
现在国内大部分PC游戏主播都是用的一款叫做OBS的开源直播软件,这款软件也是目前市面上用的最多的直播软件,简而言之我们可以把直播软件捕捉游戏画面的过程理解为不停的在进行截图,并且将这些截图按照特定的【规则】压缩成视频数据,这个过程以前都是由CPU来完成,叫做视频编码。一款游戏流畅最起码也得30fps,很多主播现在都能够推流60fps的直播,那这意味着直播软件每秒要进行30或者60次“视频截图”操作,可能有人会问了,为什么不是主播游戏帧数多少就截取多少次呢,因为这没必要,60fps就是很多观看设备的刷新率上限了,而且更高的帧数对电脑的压力会更大。
有了编码完成的数据,怎么给观众看到呢?
OBS里面设置好直播平台的目标服务器和口令后,就一边编码的同时一边将已经准备好的数据不停的发送给直播服务器,在这一过程中需要主播的网络上传带宽足够给力,才能保证视频流的完整流畅,可以给观众良好的观看体验。
用户在打开直播平台的网页或者App后,点进去主播的直播间,接收经过平台服务器处理后的视频数据,在本地解码后播放,完成了整个直播流程的最后一环,用户观看。
在这几个步骤里面,斗鱼和虎牙根据各自的成本以及其他方面的考量,有不同的妥协,所以造成了用户观看体验的损失,下面我就具体聊一聊两家的问题,以下只是个人观点,如有异议欢迎指教。
斗鱼糊和虎牙卡
在上述的几个过程里,主播游戏画面的视频数据的编码与上传到平台服务器这两步应该是没有问题的,毕竟这点都做不好也就没必要来当主播了对吧。斗鱼糊的主要原因在于,斗鱼为了节省带宽和服务器资源,选择了将主播传过来的高质量画面数据大幅压缩,然后再提供给观众。这一点我相信大家都能理解,毕竟区里面对比虎牙和斗鱼画质的帖子多的是,但从体量和观众数量来说,斗鱼那比虎牙是强多了,但是更多的观众意味着更高的带宽成本,这些成本还不低。斗鱼为什么选择牺牲画质其实很容易理解,因为带宽成本是可以无限提高的,但是营收不能,所以斗鱼选择了在有限的成本里,保证流畅度优先,而虎牙则走的是完全不同的路线。
虎牙对大主播的直播画质上限应该就是蓝光10M,这个10M代表是是10000kbps视频码率,而且虎牙相比斗鱼基本不对主播的视频数据做处理,只要主播的电脑够牛逼,OBS怎么捕获的画面,虎牙就能怎么放出来,但这带来了另外一个问题,那就是虎牙的网络资源扛不扛得住。
区里很多JRS面对说虎牙卡的帖子都说,是不是网不行,换根网线之类的,其实你看直播卡不卡不完全取决于你自己的网络。这句话怎么理解,还记得上面我说的,主播是要把自己编码好的数据传递给直播平台的服务器对吧,但是主播一个人上传的数据,怎么能让全国各地,甚至是全世界的人看到呢?这里就要引入一个CDN的概念。
我们把主播和与主播直接相连的服务器当作一个初始节点,这一台服务器的带宽和连接能力是有上限的,不可能让主播直接给一台服务器,然后让这台服务器给所有观众放视频画面,所以CDN网络就在这里大显身手了。初始节点那台服务器将主播的画面不是直接给观众传送,而是给一系列专门用来做中转的服务器,这些服务器在全国或者全世界各地都有,专门做这件事情,然后直播平台根据不同用户的地理位置,网络环境分配不同的中转服务器,这样就可以让不同用户得到最好的观看体验。但是我估计虎牙并没有做好CDN优化,因为很多人300M光纤也看不了,那就说明没有连接到合适的CDN节点,导致延迟丢包严重,反应到实际就是卡顿。
CDN网络也是要成本投入的,斗鱼选择了不管高清不高清,能看再说,而虎牙优先画质,平时看的人也没那么多,所以就把CDN网络的投入降低了(个人猜测,不一定对)。所以虎牙可能会卡,这也有可能是近期网络波动导致的,毕竟虎牙在广东那边。I have spoken。
太白山散人
· 北京非常好的技术贴,可对这个区一部分人来说完全是对牛弹琴!前几天还有一堆人发自己不卡的视频来证明别人也不能卡!你和他说BGP、CDN、骨干网、视频码率、网络环境他们都不会认真看,他们的内心坚定地认为又有人收钱搞他喜爱的平台了。。。
太白山散人
· 北京这个很简单,网页只是简单的html5解码(html5是浏览器渲染,所有网站共用)! 客户端是虎牙专用,代码里加入了加速、解码、网络环境检测等功能,可以帮助安装客户端用户更好的解码和连接到更快速的网络节点!