借莎翁的名言作为开场白:混流,还是不混流,这是个问题。
在连麦互动直播方案中,混流还是不混流,还真是一个需要仔细考量的问题。
这篇文章将会分享即构科技连麦互动直播方案在工程化和高并发运维的过程中总结出来的关于混流的经验。
|什么叫做混流 ?
在开始讨论这个问题之前,让我们先搞明白什么叫做混流。
混流,就是把多路音视频流混合成单流。准确地说,混流应该叫作混音(音频流)混画面(视频流)。
为了表述简单,我们这里就简称为混流。
混流的过程包括解码,混流,编码,和推流这四个步骤。混流这个环节包括做抖动缓冲,目的是把多路流进行画面对齐和音画同步,同时通过缓冲对抗网络抖动,以便混合成一路流以后能够达到良好的效果。
混流本身是一个相对比较耗费计算资源的运算,也是一个比较耗费时间的环节。说它耗费计算资源是因为这个过程涉及到多路流的实时转码,这是比较耗费CPU的事情。说它耗费时间,是因为这个环节涉及到抖动缓冲,会造成一定的延迟。实时转码本身耗费的时间一般会低于一帧的时间,相对不算显著;但是根据网络情况的不同,抖动缓冲会消耗大概80毫秒到1秒的时间。在连麦互动直播中,抖动缓冲造成的延迟对观众的体验十分关键。
在混流的过程中,难点是如何对抗网络抖动等不确定因素。对于各种不确定因素的处理,是最考验技术能力的。在网络好的时候,要尽量让延迟降低,要尽量快地完成处理。在网络不好的时候,又要避免卡顿和不同步等问题。这里需要有比较好的弹性设计,去满足对抗网络抖动的要求。要保证无论是网络好,还是网络抖动的情况下,音视频流的效果都一直处于一种平稳的状态,而不是跟随网络抖动而剧烈地抖动,包括延迟也要处于一种比较平滑和稳定的状态。这是一个技术难点,也是即构科技连麦互动直播方案的核心技术之一。
好了,现在基本搞清楚了混流的概念和难点了。那么混流这个事情,要不要做?如果要做,在哪里做?这两个问题都需要一番权衡。为了作出正确的选择,我们要先知道每种选择的优势和劣势。
本篇短文将只讨论混流还是不混流,在下一篇中将会讨论在哪里混流,敬请期待。
| 不混流的优势和劣势
如果不混流,那么进行连麦互动直播的时候,多个主播推出来的音视频流就会分别独立地被拉到观众端播放,这种方式我们叫作拉多流。
.不混流的优势
1)延迟低
不用混流,节省了混流消耗的时间,显著地降低了延迟。
2)成本低
如果是在服务端进行混流,将会耗费计算资源。考虑到服务端计算资源比较昂贵,如果不用混流,将会节省宝贵的计算资源,显著地降低成本。虽然拉多流比起拉单流会消耗更多的带宽成本,但是拉多流节省计算资源成本,整体而言,成本是降低了。
3)灵活性
在观众端,业务侧可以比较灵活的操控多路流,来满足多样化的业务需求。比如画中画大小画面相互切换,和对半分屏画面左右调换等效果,来提高观众端的用户体验。
. 不混流的劣势
上面提到,拉多流会消耗更多的带宽。多路流被从服务端推到CDN, 然后观众端从CDN拉多流,都会耗费比较多的带宽成本。对于带宽成本占了运营成本显著百分比的游戏直播平台来说,的确是需要慎重考量的。
|混流的优势和劣势
如果混流,那么进行连麦互动直播的时候,多个主播推出来的音视频流就会被混合成一路单流被拉到观众端播放,这种方式我们叫作拉单流。
.混流的优势
我们要从多个角度看混流的优势,包括成本,易录制,易传播和兼容性。
1)成本
可以分为计算资源成本和带宽成本。由于预先做混流,因此计算资源成本会上去,但是由于只拉单流,因此带宽成本会下来。
上面已经对这个议题进行了简单的讨论。
如果混流是在服务端做的话,那么整体成本还是会上去的。因为服务端的计算资源成本相对比较昂贵,提高的计算资源成本比混流后节省的带宽成本要多。
如果混流是在推流端做的话,相当于平台把计算成本和带宽成本转嫁给推流端(主播端),因此整体成本会降下来,但是服务质量也会降下来,这样就付出“用户体验成本”。
综合而言,混流并非一定会节省成本。
2)可录制
如果业务上有录制音视频流的需求,以备监管抽查或者观众回放的话,那么需要进行混流。如果不进行混流的话,录制的时候只能录制到其中一个路音视频流,也就是只能看到其中一个主播的画面。要录制全画面的话,必须要进行混流。
3)易传播
如果业务上有通过音视频流地址链接(HLS)进行转发传播的需求,那么也需要进行混流,因为地址链接只会指向一路音视频流。如果不混流,使用转发的地址链接就只会播放出一个主播的音视频流。
4)兼容性
还有另外一个情况,直播平台早期已经开发了一个版本的播放器,这个播放器只能播放单流。为了和这个老版本的播放器兼容,也必须要进行混流,才能够产生单流让这个播放器播放。
混流的优势是能够做全画面录制,很便利地转发传播,而且兼容直播平台的老系统。运营成本是否能够降低,主要看混流是在服务端做还是在推流端做。
.混流的劣势
1)高延迟
由于在做混流的过程中,需要做抖动缓冲和实时转码等计算处理,将会耗费时间,从而造成额外的延迟。
混流的延迟比不混流的延迟要高。
如果在推流端进行混流,那么延迟的时间包括实时转码处理的时间,抖动缓冲的时间,还有等待其它主播音视频流的时间。推流端必须要等待其它主播的音视频流到达以后才能进行混流。
如果在服务端进行混流,那么延迟的时间包括实时转码处理的时间和抖动缓冲的时间。
在推流端混流的延迟比在服务端混流的延迟要高。
2)不灵活
由于观众端拉单流观看,多路音视频流已经被混合成单流,所以观众端无法再灵活地对多流进行操控,比如切换画中画的主次画面。
3)高成本
由于混流需要额外的计算资源,这里会导致额外的运营成本。
如果混流在服务端进行,混流的成本就由平台承担。虽然混流后拉单流节省带宽,但是服务端的计算资源比较昂贵,节省的带宽成本并没有额外消耗的计算资源成本多。 整体而言,混流的成本还是比不混流的成本高。
如果混流在推流端进行,混流的成本就被从服务端转嫁给推流端。推流端需要具备以下条件:
a)推流端(主播端)的手机配置要求比较高,手机的性能要求比较好,要能够支持混流所需要的计算能力。
b)推流端的上行带宽有比较高的要求。推流端推两路流,拉其它主播的多路流。推的两路流包括:自己原始的音视频流,和混流以后的音视频流。拉的多路流是其它主播的音视频流,要从媒体服务器上拉取下来。
因为推流端需要有更好的手机配置,更好的上行网络带宽,所以需要付出更高的成本。
混流的劣势是高延迟和不灵活。成本方面要看是在服务端混流还是在推流端混流。如果在服务端混流会导致高成本,如果在推流端混流会导致高延迟,付出“用户体验成本”。
综上所述,混流和不混流的方案,各有各的优点。要针对直播平台具体的业务需求和使用场景来决定使用哪个方案。相对来说,不混流的方案有不少突出的优点,比如延迟低,成本低,而且灵活性高等。
即构科技同时提供混流和不混流的方案,灵活而且全面的满足各种类型的直播平台的业务需求。在即构科技的实践中,发现不混流的方案更加受到主流客户的欢迎,效果是得到了市场证明的。使用不混流方案的客户包括花椒和栗子直播。
经过一番讨论,我们回过头来发现:混流,还是不混流,这还是个问题。
即构科技在服务一线直播客户的过程中总结了混流和不混流方案的各种优势和劣势。根据这些经验来衡量采用混流,还是不混流的方案,做出来的决定应该更加靠谱和接地气。
做完混流,还是不混流的决定以后,如果要混流,那么在哪里做混流?是在推流端还是服务端?这一点将会在下一篇中毫无保留地详细讨论,分享即构科技的技术经验。
网友评论