适用于中小企业呼叫场景的ARCall

什么是 anyRTC ?

anyRTC 是一家全球实时音视频云服务供应商,致力于提供高可用、高质量的实时互动服务,为客户提供安全、可靠的产品及优质的服务体验。

什么是 ARCall ?

ARCallanyRTC 仿微信呼叫的示例项目,可实现一对一及多人音视频通话。

什么是 AppID ?

AppID 为应用的唯一标识,即 application identification(应用识别;应用辨识),是用来标记你的开发者账号的。

什么是 RTC ?

RTCReal-Time Communication,能实现语音通话、视频通话、音频互动直播以及视频互动直播等实时通信场景,主要用于传输音视频。

什么是 RTM ?

RTMReal-time Messaging,可用于实现消息发送、呼叫邀请等信令系统功能,主要用于传输文本。

前期准备

注册账号

  1. anyRTC控制台 注册一个账号。

划重点:每个月有 10000 分钟的免费时长

  1. 创建一个项目

接下来的 试用通话 可以点 x 跳过

  1. 项目管理 页面,获取该项目的 APP ID

APP ID 一定要保管好,不能泄露,不然可能免费时长也不够用哦

域名和证书

基于浏览器的音视频应用,需要采用 https 协议才能使用本机的音视频设备,因此代码做了处理,用 http 协议是不能登录的

这一点老苏以前强调过很多次了,可以翻翻之前跟音视频相关的文章

老苏没有公网 IP,用 frp 做的内网穿透,但做了泛域名解析,不了解的可以翻翻老苏以前的文章

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FROM nginx:1.12-alpine
LABEL maintainer=laosu<wbsu2003@gmail.com>

# 环境变量
ENV RTC_APPID rtcappid
ENV RTM_APPID rtmappid

WORKDIR /app

## 拷贝静态文件
COPY . /usr/share/nginx/html

COPY replace_appid.sh ./replace_appid.sh
RUN chmod +x replace_appid.sh

EXPOSE 80

CMD ["sh", "replace_appid.sh"]

replace_appid.sh 用于替换环境变量值

1
2
3
4
5
6
7
#!/usr/bin/env sh

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,rtcappid,'"$RTC_APPID"',g' {} \;

find '/usr/share/nginx/html' -name '*.js' -exec sed -i -e 's,rtmappid,'"$RTM_APPID"',g' {} \;

nginx -g "daemon off;"

修改 ARCall/Call-web/assets/js/index.js 文件

1
2
3
4
5
6
7
8
//配置
var Config = {
RTC_APPID: "",//RTC 应用ID
RTM_APPID: "",//RTM 应用ID
RTC_MODE: "live",//RTC 通信模式
RTC_CODEC: "h264",//RTC 视频编码格式
...
};

改为

1
2
3
4
5
6
7
8
//配置
var Config = {
RTC_APPID: "rtcappid",//RTC 应用ID
RTM_APPID: "rtmappid",//RTM 应用ID
RTC_MODE: "live",//RTC 通信模式
RTC_CODEC: "h264",//RTC 视频编码格式
...
};

构建镜像和容器运行的基本命令如下👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 拉取源代码
git clone https://github.com/anyRTC-UseCase/ARCall.git

# 如果 github 慢或者访问不了
git clone https://hub.fastgit.org/anyRTC-UseCase/ARCall.git

# 进入代码目录
cd ARCall/Call-web

# 将 Dockerfile、 replace_appid.sh 文件放进 ARCall/Call-web 目录中

# 修改 ARCall/Call-web/assets/js/index.js 文件

# 构建镜像
docker build -t wbsu2003/arcall:v1 .

# 生成容器
docker run -d \
--name=arcall \
-p 3580:80 \
-e RTC_APPID=你的AppID \
-e RTM_APPID=你的AppID \
wbsu2003/arcall:v1

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 arcall ,选择第一个 wbsu2003/arcall,版本选择 latest

端口

端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
3580 80

环境

可变
RTC_APPID 你的 AppID
RTM_APPID 你的 AppID

运行

在浏览器中输入 http://群晖IP:3580 就能看到主界面

改用我们前面设置的域名 https://arcall.laosu.ml 访问,会弹出申请摄像头,要点 允许

接下来是申请 麦克风,同样要 允许

之后就会获取到 用户ID

点对点呼叫邀请

在另一台设备上打开 https://arcall.laosu.ml,授权音视频设备后也会获得 用户ID

在任何一方点击 点对点呼叫邀请

输入对方的 用户ID 后,点 视频呼叫

等待对方同意

接收端会看到呼叫方的 用户ID

接通后会显示双方的图像

多人呼叫邀请

多人呼叫邀请

点对点呼叫邀请 不同,可以一次输入多个 用户ID

发起邀请

同样也需要接收端同意

双击图像可以变大窗口

会议中可以继续邀请,只要带宽足够,最大可以支持到 50

其他端

ARCall 开源项目不仅仅只是 Web 端,还有 iOSAndroiduniapp 端,有需要的可以直接下载编译,但是要实现各端的互联互通,必须使用同一个 APP ID

小结

老苏之所以觉得 ARCall 适合中小企业,是因为大企业一般都会自建基于硬件的视频会议系统,需要有专门的硬件设备和会议室,而中小企业不一定有这笔预算

虽然 ARCall 只是个示例,但是已经完成了音视频通讯的基本功能,如果你会写点代码,可以加上白板、文档共享等功能,使之成为真正适合你和你所在企业的专属音视频会议系统

当然 ARCall 能做的绝不仅仅局限于视频会议,如果开发中遇到问题,可以直接联系 anyRTC,联系方式就在👇下面

参考文档

anyRTC-UseCase/ARCall: 一对一呼叫、邀请呼叫、音视频通话、多人通话,适合陌生人交友、在线教学、在线医疗、智能终端等场景;更能轻松实现腾讯会议,Zoom会议,钉钉课堂等多人音视频交互类场景。一对一音视频,一对多音视频。
地址:https://github.com/anyRTC-UseCase/ARCall

文档中心 - anyRTC
地址:https://docs.anyrtc.io/