音视频

Webrtc是目前主流的音视频解决方案,它提供了媒体能力,信令需要另外来扩展。webrtc官方提供的demo使用起来非常麻烦,我们基于野火IM的通信能力,构建了一套信令系统,非常方便的使用。我们提供的的音视频库只支持1对1通话,可以免费给客户使用,但不提供源码。我们也可以定制开发多人音视频功能。

0.0.1. 野火音视频的组成部分

野火音视频系统有如下几部分组成。

  1. 野火IM,作为信令传输通道,负责把信令在通话两端传递。与谷歌方案中的Signailing Server作用稍有不同,野火IM服务只作为透传信令到客户端,客户端SDK实现所有逻辑。
  2. EingineKit,封装了WebRTC信令,做成了一个简单易用的音视频库,用户只需要startCall,endCall来使用。已经集成到Android/iOS Demo应用中了。
  3. WebRTC库,直接使用谷歌提供编译好的软件包,android的版本是1.0.30039,iOS的版本是1.0.26195,PC使用的是Chromium v69.0.3497.128。
  4. Turn服务,需要部署开源turn服务器,不需要另外部署服务器。不需要另外搭建STUN服务,因为Turn服务自带STUN服务的功能。服务与其它任何服务都没有依赖,可以单独部署,需开放TCP3478端口和所需要的UDP端口(默认需要开放所有UDP端口,也可以配置turn服务设定UDP端口范围).

0.0.2. 使用方法

  1. 确保野火IM功能正常,确保通话双方能够收发消息

  2. 部署Turn服务器,建议部署coTurn,部署方法请使用百度查询。部署完毕后,使用这个链接检查turn服务是否部署成功。注意一定要是turn服务,不能是stun服务,一定要出现下图中红线标注的type图片

当Type为"relay"且后面的地址为您的公网IP时,表明turn服务部署成功,否则为失败。

  1. 修改客户端配置 在客户端的config文件中,修改地址为您部署的turn服务器地址
NSString *IM_SERVER_HOST = @"192.168.1.101";

NSString *APP_SERVER_HOST = @"192.168.1.101";
int APP_SERVER_PORT = 8888;

NSString *ICE_ADDRESS = @"turn:turn.liyufan.win:3478";
NSString *ICE_USERNAME = @"wfchat";
NSString *ICE_PASSWORD = @"wfchat";

注意如果客户分属多区域,可以部署多个turn服务器来提高用户体验。音视频添加turn服务信息的接口可以调用多次,每次增加一个turn服务器。

0.0.3. 上线一定要自己部署Turn服务

野火IM提供了体验用的环境,环境配置为1C1G1M,仅能够供应体验使用,上线商用时一定要切换到自己的Turn服务器。

0.0.4. 其它

  1. 多人音视频授权绑定的是IM的域名,不是绑定的turn服务域名,所以可以使用任意turn服务器地址。
  2. turn服务可以部署多个,在客户端多次调用addIceServer即可。当用户在全球多个区域分布式,可以在不同区域部署多个turn服务,提高体验。

0.0.5. 如何安装Turn服务

Turn服务不是野火IM的内容,就像mysql,redis之类的基础组件,需要客户自行安装的,这里也提供一个安装说明,仅供大家参考。点如何安装Turn服务了解详情。

0.0.6. 问题排查

  1. 部署TURN服务一定要用上文中的链接检查,得到的结果一定要有relay类型的候选,且地址为您的公网地址。
  2. 一定要开通TCP3478端口及TURN使用的UDP端口,默认是所有UDP端口,也可以在turn服务配置中限定端口范围,但要保证至少一万个。
  3. 修改客户端的配置,注意格式,turn:域名或ip:3478,不要忘记头部的turn字段。
  4. 如果客户在内网,一定要确认内网防火墙是否开通了对turn服务的3478端口及UDP端口的访问权限。
  5. 如果是多人音视频,注意是否使用的是绑定的域名。
2018 © wildfirechat.cn 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2020-07-20 11:32:59

results matching ""

    No results matching ""