野火音视频全球接入方案
在之前一遍文章《野火IM全球接入方案》中讲到野火IM可以全球建立接入点来改善IM接入质量。现在野火音视频高级版也同样支持建立接入点接入来改善音视频的接入质量。下面我们看下原理和实现方法吧:
1. 全球接入的原理
假设有2个地域A和地域B的用户在使用音视频服务,音视频服务部署在A区域,B区域的用户访问音视频服务就会遇到跨区域访问的问题,容易出现延迟大、丢包率高、频繁掉线等问题。这时就可以使用Turn服务来接入,B区域的用户与部署在B区域的Turn服务连接,Turn服务再通过可靠网络与音视频服务连接,这样区域B的用户就可以无障碍地与音视频服务进行交互了。如下图所示:
2. 野火IM全球接入的实现
音视频的全球接入有4部分需要分别处理,网络环境的准备、Turn服务的部署、Janus服务的配置、客户端的策略和配置。下面分别讲一下如何处理:
2.1. 网络环境的准备
如果您有多个区域的用户,首先需要选择把音视频服务部署在哪里?需要把音视频服务部署在用户最多、业务量最大的区域,这样跨区域的流量就能降到最低。然后在其他重要区域购买云服务器作为接入点。需要建立接入点与主服务网络的可靠网络连接,可靠网络连接云服务器提供商一般都有多种服务可以选择,确保接入点和主服务网络能够内网互通且网络质量良好。
2.2. Turn服务的部
跟正常Turn服务部署一样,唯一的地方在于Turn服务配置中的外网IP填写该接入点的内网IP。通过turn服务的检查,得到Relay的地址为该内网地址。
2.3. Janus服务的配置
Janus服务配置janus.jcfg
,修改如下,然后重启音视频服务。
keep_private_host = true
2.4. 客户端的配置
客户端需要添加本区域的turn服务到音视频SDK中。android的代码如下:
AVEngineKit.Instance().addIceServer(turnUrl, turnUserName, turnPassword);
其他客户端也有对应的函数。如果有多个加速区域可以判断用户所在区域并设置对应的turn服务信息。
3. 流量计算
野火支持大小流,一般情况下用户只订阅一个大流,其它流只订阅小流。这样当一个会议有N个接入点接入用户和M个直接接入用户时,从接入点到主服务的流量为N(大流+小流),从主服务到接入点为N (1大流 + M-1小流)。关于大小流可以参考说明。
4. 总结
结合野火IM全球接入方案,野火即时通讯和实时音视频都可以提供全球的接入,为用户提供更高质量的沟通交流体验。