Webrtc是目前主流的音视频解决方案,它提供了媒体能力,信令需要另外来扩展。webrtc官方提供的demo使用起来非常麻烦,我们基于野火IM的通信能力,构建了一套信令系统,非常方便的使用。我们提供的的音视频有两种模式,免费版使用P2P模式,可以支持4路视频通话,客户可以免费使用,但不提供源码;音视频高级版支持能多路表现更稳定。
野火音视频系统有如下几部分组成。
Signailing Server
作用稍有不同,野火IM服务只作为透传信令到客户端,客户端SDK实现所有逻辑。确保野火IM功能正常,确保通话双方能够收发消息
部署Turn服务器(音视频高级版不需要Turn服务,可以直接跳到第三步),建议部署coTurn,部署方法请使用百度查询。部署完毕后,使用这个链接检查turn服务是否部署成功。注意一定要是turn服务,不能是stun服务,一定要出现下图中红线标注的type。
当Type为"relay"且后面的地址为您的公网IP时,表明turn服务部署成功,否则为失败。
NSString *ICE_ADDRESS = @"turn:turn.liyufan.win:3478";
NSString *ICE_USERNAME = @"wfchat";
NSString *ICE_PASSWORD = @"wfchat";
注意如果客户分属多区域,可以部署多个turn服务器来提高用户体验。音视频添加turn服务信息的接口可以调用多次,每次增加一个turn服务器。
替换音视频库 如果是高级版音视频,需要替换EngineKit库,替换方法在随SDK发布的说明上,免费版请忽略。
启动媒体服务。 如果是高级版音视频,需要启动媒体服务,启动方法在媒体服务发布的说明上,免费版不需要此服务。
| 功能 | 免费版 | 高级版 | ------ | ------ | ------ | ------ | | 实现方式 | Mesh | SFU | | 媒体服务 | 不需要 | 需要 | | 媒体流是否经过服务器 | 部分 | 全部 | | 流量带宽要求 | 低 | 高 | | 同时支持视频路数 | 4 | 9 | | 同时支持音频路数 | 9 | 20 | | 录制 | 不支持 | 支持 | | 价格 | 便宜 | 稍贵 | | 是否依赖Turn服务 | 是 | 否 | | 是否部署媒体服务 | 否 | 是 | | 对IM服务依赖 | 社区版或专业版 | 专业版 | | 是否支持会议 | 否 | 是 |
更多详细内容,请参考野火音视频简介。
野火IM提供了体验用的环境,环境配置为1C1G5M,仅能够供应体验使用,我们会不定期的更新密码,免费版上线商用时一定要切换到自己的Turn服务器。
Turn服务不是野火IM的内容,就像mysql,redis之类的基础组件,需要客户自行安装的,这里也提供一个安装说明,仅供大家参考。点如何安装Turn服务了解详情。
relay
类型的候选,且地址为您的公网地址。另外不能有报错信息。http://turn服务器地址:3478
,正确情况下应该返回部分信息。turn:域名或ip:3478
,不要忘记头部的turn
字段。iftop
命令查询实时带宽状态,不用用云服务商提供的监控(那个是几分钟聚合的,不能反映瞬时的状态)。建议使用按流量计费的服务。如果是高级版,请忽略掉turn的检查。
多人音视频SDK是试用p2p模式的,会先尝试打洞直连,如果打洞失败则会通过turn服务中转。一般情况下有一方是流量时肯定无法打洞成功;双方都是wifi的情况下也有可能打洞失败(跟网络有关)。我们的经验是大概有50%是无法打洞直连的。通话的流量跟路数成正比,1对1通话就是2路,N人通话就是N*(N+1)路通话,每一路视频通话的流量上下行各100KB/s。语音通话每一路的流量在3KB/s左右,所以相比视频可以忽略不计。
所以,如果是100个1对1通话,那么有50个1对1通话是走turn服务,50个1对1通话是100路,流量为100*100KB/s = 10MB/s = 80mbps。turn服务可以部署多台,客户端配置多个turn服务地址即可。这个是估计的情况,上线后还要根据实际情况来调整。
以上是多人音视频的带宽估计,高级版全部走服务器中转,通话质量更高,但1对1通话没有直连,流量消耗更高,但在多人视频通话中有大小流,消耗带宽则相比Mesh架构显著降低,具体信息在高级版服务上有说明。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。