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

什么是 anyRTC ?

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

什么是 ARCall ?

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

什么是 AppID ?

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

什么是 RTC ?

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

什么是 RTM ?

RTM 即 Real-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<[email protected]>

# 环境变量
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 端,还有 iOS、Android 和 uniapp 端,有需要的可以直接下载编译,但是要实现各端的互联互通,必须使用同一个 APP ID

小结

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

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

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

参考文档

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

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