首先改教程得感谢慕课网
实时互动直播和普通直播相比有本质的区别:延时。实时互动直播延时必须低达几百毫秒。
为什么是几百毫秒?为什么不是几秒也不是几毫秒?这是由人们日常交流习惯决定的。人的说话声音通过声波传播,如果两人相隔34米,那么延时就是100毫秒。基于这个范围,略长的延时,观众还能。基于互联网的音视频通信,音频通话延时标准在400毫秒以内,视频通话延时在800毫秒以内,这可以让通话双方无延时感知的。延时如果达到秒的数量级,那么通话双方就会有明显的等待。
互联网是基于电磁波或者通过光纤传播的。光绕地球一圈,耗时300毫秒,这是无法逾越的物理定律延时。有人号称可以做到0延时,他们估计用上了量子通信。在实际互联网应用中,网络条件并不理想,互联网信号绕地球一圈的延时必然大于300毫秒。这就给实时互动直播,带来了巨大的挑战。
(1)自建UDP协议
作为视频直播呢!我们需要一个实时性,所以这里面呢我们采用的是udp协议进行传输,而udp协议假如存在网络延迟的情况下容易存在丢包现象,所以我们需要自建udp协议,用于客户端与服务器的通信,也就是说,需要在原有的udp协议下加入丢包重发处理机制,但又不能太复杂,否则就跟tcp协议没什么两样了。
(2)服务器多个节点分布
由于服务器得二十四小时服务,可是服务器随时都可能瘫痪,那个多个节点可以进行切换,这个切换有控制中心进行实现
(3)控制中心
就像人多了,需要有个组织进行管理,那么控制中心做的是同样的事情,只不过管理的是节点,当其中的节点挂了,或者说数据处理达到一定限度,控制中心便进行调度,从而增大了服务器的吞吐量
(4)总线
节点挂载在控制中心
(5)CDN网络
将RTP流转换成RTSP/HLS,最终推流将音视频数据发送给用户