1. 功能介绍
本模块支持单人和多人的音视频通话,且移动端和web端支持互相呼叫。
本模块基于原生webrtc实现,并非封装的第三方库或云厂商接口,不会产生额外费用
由于uniapp本身并未支持webrtc接口,所以uniapp端的音视频通话功能需通过与webview组件交互实现。此webview组件源码修改后需要进行编译才会生效,具体请参考组件编译说明
2. 购前须知
-
- 音视频功能支持web、ios、安卓、 h5,不支持微信小程序,4.1为什么不兼容微信小程序
- 并非所有设备都能支持音视频通话,兼容性跟手机的型号、操作系统、浏览器都有关系,实际效果以演示环境为准,购买前请先在体验环境进行测试,确认是否达到要求。4.2目前uniapp端音视频通话兼容性如何?
- 多人通话可通过配置项webrtc.max-channel修改单个群聊最大通话人数,默认9人,建议不要超过16人(微信就是限制16人)
- 跨网段通话需要搭建coturn,并修改配置项webrtc.iceServers
3. 组件编译说明
3.1.1. 介绍
uniapp的音视频功能通过webview实现,以下两个目录分别是”多人通话”和”单人通话”的webview组件源码。
这两个webview组件本质上分别是一个H5页面,基于vue2开发,经过编译打包后,自动拷贝到uniapp的hybrid目录,成为音视频通话的webview组件。
3.1.2. 编译
编译本组件十分简单,基本上就是跟打包vue项目一致,以编译”单人通话”组件为例,操作如下:
安装node:v18.19,进入im-webview-private-rtc目录,打开命令行执行:
npm install
npm run build
编译通过后,会在im-uniapp的/hybrid/html生成代码:
编译完成,正常启动uniapp即可!
4. 常见问题
4.1. 为什么不兼容微信小程序
- 微信小程序与webview组件无法很好的进行实时通信,难以通过原生webrtc实现
- 如果要微信小程序上实现音视频通话,一般要通过腾讯云提供的音视频sdk来实现
4.2. 目前uniapp端音视频通话兼容性如何?
这是作者和一些朋友手机的兼容性测试情况(仅供参考):
- 安卓手机主流机型基本都支持,但是部分浏览器不支持,例如小米手机的默认浏览器
- 安卓13的app有webview存在bug,有可能不支持(如果打包成h5则正常)
- 苹果手机:不支持较旧的机型,网上资料是系统在ios14.3以上支持webrtc,实际测试结果是需要iphone12,系统ios15以上,才能比较稳定支持
4.3. uniapp端如何打开/去掉右下角的vconsole绿色按钮?
打开/注释组件中以下代码,重新编译即可
4.4. 通话失败应该如何排查?
服务器配置问题请排查:
- 服务器是否部署了ssl证书?
- coturn是否安装并通过测试:coturn测试网站?
- coturn信息是否已配置到im-platform的配置文件?
设备问题请排查
- 摄像头是否损坏、被禁用或被其他进程占用
- 如果是苹果手机,iphone11或ios14以下不支持webrtc
- 如果是安卓手机访问h5, 默认浏览器可能不支持webrtc,建议用其他浏览器,或者直接用微信点开
- 如果是安卓app, 安卓13系统的webview有bug,尽管做了一些适配,但仍可能无法兼容webrtc。如需兼容安卓13,需要在打包时将targetSdkVersion降至29(但可惜的是targetSdkVersion必须30以上打的包才能上架)
5. 效果截图
h5单人通话:
h5多人通话:
web多人通话:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容