2020年第二季度,斗鱼带宽支出为1.684亿人民币,平均每月5613万,虎牙带宽支出为2.648亿人民币,平均每月8826万,这样的带宽成本,虽然很吓人,但如果斗鱼虎牙不使用相关的技术,降低成本,那么带宽,可能还要上升几十倍,甚至上百倍。

那么,直播平台都是通过什么样的技术手段,节省带宽支出的呢?

武器一:编码压缩

正常情况下,用户观看直播,每小时需要消耗多少流量?

我们知道,一个视频是由很多张图片连续不断播放形成的,每秒播放几张图片,被称为帧率。例如24fps,就是每秒播放24张图片。常见的帧率有24fps、30fps、60fps等。

所以,我们只要先算出一张图片消耗了多少流量,再计算帧率,就能得出视频每秒消耗的流量了。

一张图片由很多像素点组成,要想知道一张图片的大小,必须先从一个像素算起。那么一个像素多大呢?例如一张图片的分辨率为1920x1080,它就由1920*1080=2073600个像素点组成。

一个像素一般为24bit。

如果我们按直播画面1080p计算,则一张图片约为2073600*24=49766400bit,约5.9MB。

帧率为24fps时,视频每秒消耗为:

49,766,400bit×24=1,194,393,600‬bit=149,299,200‬byte

也就是说,播放一个1080p清晰度的视频,每秒将消耗142MB的流量,每小时消耗将高达499.2GB!

如果是这样,不可能会有腾讯视频、爱奇艺,也不会有虎牙和斗鱼这种直播平台,因为这样的消耗,没有哪家公司能承担得起。

为了解决这个问题,就必须使用编码压缩。

首先,对采集的视频进行模数转换,将模拟信号变成数字信号。接着将RGB信号,转变成更容易进行压缩的YUV信号,最后再采用编码格式进行编码。

最新的编码格式为H.265,它的压缩率十分惊人,能达到300~500:1!

如果是一个1080p,24fps的视频,采用H.265编码格式后,码流为:

1,194,393,600‬bit ÷ 300 = 3,981,312 bit/s

再加上音频,我们以192kbps算,则总共为:

3,981,312 bps + 192 kbps = 4,080 kbps

考虑到一些抖动和冗余,一条6Mbps的宽带就足够了。

但是,这只是一个用户观看直播的带宽,如果有1000人观看?10000人观看呢?假设如果有10000人同时观看,则宽带要求会变成惊人58Gbps!像斗鱼和虎牙这样,同时在线人数很可能超过百万的平台来说,带宽要求更夸张。

武器二:CDN加速

降低带宽费用的另一大杀器是使用CDN加速。

先科普一下什么是CDN。CDN全称内容分发网络,它可以将网站/app的内容,分发至全网服务节点,加快网站与用户之间的传输速度。最主要的是,CDN能大幅降低回源量,让网站轻松应对带宽突增的情况。

CDN技术的优势在于灵活,可以根据不同时间段,不同的流量,对带宽进行有效的管理。用户多了,就增加带宽,用户少了,就减少带宽。这将可以大幅降低带宽带来的成本。

那么,CDN是怎么工作的呢?

我们假设有这么一家北京的直播平台——斗牙。它的服务器也放在北京。

有一名主播开播后,就会将视频数据上传至北京的斗牙服务器上。因为斗牙服务器使用了蔚可云的CDN加速,它的这些视频数据,还会缓存至蔚可云CDN服务器上,这些缓存服务器遍布全国。

这时,如果有一名广州的观众,打开网站想观看该主播的内容,广州的CDN缓存服务器会将视频数据直接传输给他观看。

这样一来,这名观众并没有通过斗牙服务器观看直播,自然不会占用源站的资源,从而也为斗牙直播平台省下了成本。

CDN并不是免费的,在减少带宽成本支出的同时,CDN使用成本也会增加。

不过CDN成本会明显低于带宽成本,使用CDN后,大约可以为直播平台节约30%以上的宽带成本支出!

当然,这两种方式是最主要的省钱手段,直播平台还能采用一些小手段,降低带宽的成本支出,这里就不一一列举了。