直播App最大的敌人就是“墙”。不要紧张,不是谷歌的那个死对头,而是真的砖墙。

众所周知,主播直播的时候,会做一些激烈的运动。。。比如:在屋里走动。当她手持手机绕过一堵墙的时候,会导致Wi-Fi信号骤然降低,但是主播往往不会意识到信号减弱这个事实。同样,在户外用3G/4G网络进行直播的户外主播,面对的网络情况更加复杂。

想象一下这样的情况:

如果主播向广大观众说一句“我爱你”,但是却要等10秒的时间才收到 Diors 赠送的玫瑰花,这短短的10秒钟,足以把“我爱你”和送花的行为割裂成两个没有联系的部分。

这种直播体验显然非常糟糕。

在复杂的情况下,如何不让网络另一端的广大 Diors 错失“福利”,直播平台会选择使用网络加速服务商(CDN)的服务。一般来说:大流量传输,如迅雷下载、乐视视频或熊猫TV,都需要 CDN 的服务,以提高用户接收文件包的速度。通俗来讲,CDN的原理就是把用户需要的文件先利用高速的网络通道缓冲到离用户最近的节点,然后再就近传输给用户。减少了从远程服务器搬运的长途跋涉。

在CDN的应用中,有很多场景。例如爱奇艺、乐视这类视频网站,用户请求的视频是有限长度的一段综艺节目或电视剧,观看者会综合考虑画质和传输速度。而对于斗鱼TV、熊猫TV这类有互动的“流媒体”直播平台来说,用户对于直播流畅性是非常在意的。正如前面所说,人对于反馈的等待时间是有忍耐极限的。

熊猫TV的 CDN 服务商又拍云 CTO 黄慧攀告诉雷锋网:

从经验来看,主播和观众双方互动从开始到结束,在4秒之内完成是可以接受的底线。在直播推流端(主播端)网络状况达标的情况下,又拍云可以把网络延迟控制在2-3秒。

在传输过程中,传输质量当然由 CDN 厂商负责,但是,如果出现直播端网络信号不好这样的“硬伤”,CDN 厂商会如何处理呢?

面对这种情况,CDN 厂商就必须做出取舍。黄慧攀说,如果直播端遇到网络问题,在传输中会采用“抽帧”的方案:原本一秒视频包含25帧画面,但是在网络状况不好的情况下,会优先保证声音的传输,把视频的传输变为每秒10帧或更少。

简单说来,就是在牺牲一定直播画质的基础上,保证用户的流畅体验。

打个比方,视频直播就像送快递,如果发件人手里需要运送的物品过多,作为快递员的 CDN 就会和寄件人“商量”,筛选最重要的几件物品优先打包运输,同时扔掉其余的物品。

但是,这里有一个技术细节:接收快递的人如果没有能力同时接受如此多的快递,快递员就不能采用扔掉包裹的方式来处理。因为这些快件已经被打包,在运输的过程中,作为快递员是不能私自拆包的。这时,直播App一般会选择降低码率,也就是降低解析度的方式来解决——例如用最低320像素的分辨率来传输视频。当然,如果网络再进一步恶化,CDN 加速也无能为力。

由于涉及到多次网络分发,从中转网络到边缘网络,每一次缓冲都需要半秒左右的时间,所以视频直播每降低哪怕零点几秒的延迟,CDN 厂商都需要付出巨大的技术努力。

对于直播平台来说,也有很多策略可以选择。例如:

  • 当直播由于网络信号中断,再次恢复的时候,延续之前的直播几秒才跳到实时直播时点。

  • 对于某些主播,是选择耗费资源的高清信号,还是在 CDN 网络上进行在线压缩之后再推送出去。

这些都是根据直播平台的内容制定的。

此看来,简单的直播,却涉及到很多环环相扣的技术解决方案,主播每一次“运动”都是牵一发而动全身的。