一对一视频通话软件Call-Me

什么是 Call-Me ?

Call-Me 使你能够直接通过网页浏览器使用 WebRTC 技术轻松进行一对一的视频通话。

Call-Me 的主要功能:

  • 使用用户名登录。
  • 通过输入接收者的用户名进行视频通话。
  • 切换视频源的可见性。
  • 通话结束时挂断电话。
  • 提供 REST API 获取所有连接的用户。

准备

出于安全考虑,浏览器要使用摄像头和麦克风,须要在 https 协议才能开启,或者处于开发模式,使用 localhost 访问

因此有两个方案:

  • 方案一:采用惯例,用 npm 反代 http://群晖IP:8582,实现用域名 https://vchat.laosu.tech 的访问 ;
  • 方案二:直接使用 https://群晖IP:8582。这种方案同样也可以用 npm 反代,从而实现可以同时使用 IP 或域名访问;

环境变量

将下面的内容保存为 env.txt 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Server
SSL=true
DOMAIN=vchat.laosu.tech
PORT=8582

# Stun
STUN_SERVER_ENABLED=true # true or false
STUN_SERVER_URL=stun:stun.l.google.com:19302

# Turn
# Please create your own free account on: https://www.metered.ca/tools/openrelay/

TURN_SERVER_ENABLED=false # true or false
TURN_SERVER_URL=turn:a.relay.metered.ca:443
TURN_SERVER_USERNAME=e8dd65b92c62d3e36cafb807
TURN_SERVER_CREDENTIAL=uWdWNmkhvyqTEswO

# API
API_KEY_SECRET=W@4TG9JXixLtYGu!vCAvSjsL
  • SSL :老苏采用了方案二,因此设为 true
  • DOMAIN:主机 IP 或者域名;
  • PORTWeb UI 的端口;
  • API_KEY_SECRET:是用于 API 身份验证和安全性的重要组成部分,可以理解为密码;

WebRTC 中,STUNTURN 是两种用于 NAT 穿透的技术,它们帮助在复杂的网络环境中实现点对点通信。

在这里TurnStun 保持默认就可以了。如果只是在局域网中使用,也可以关闭 Stun,这样可以规避可能遇到的服务器访问不到的问题。

反向代理

这一步是非必须的,因为前面设置了 SSL=true,所以用 https://群晖IP:8582 也是可以的;

假设实际访问地址为: https://vchat.laosu.tech

你必须要用自己的域名,而不是照搬老苏的;

域名 局域网地址 备注
https://vchat.laosu.tech https://192.168.0.197:8582 Call-Me 的访问地址

npm 中的设置

【注意]:因为前面设置了 SSL=true ,所以这里是 https 协议,而不是 http,否则会打不开网页。

SSL 都勾选了

安装

在群晖上以 Docker 方式安装。

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

本文写作时,镜像只有一个 latest 版本,但从日志看,软件版本为 1.0.10

docker 文件夹中,创建一个新文件夹 callme,将 env.txt 放入根目录

文件 装载路径 说明
docker/callme/env.txt /src/.env 环境变量文件

【注意】:是 添加文件 而不是 添加文件夹

端口

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

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

默认没有对外暴露端口,因为这个端口是根据环境变量 PORT 设定的,如果 PORT 变更了,这里也要跟着变

需要点 + 号自行添加

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 callme
mkdir -p /volume1/docker/callme

# 进入 callme 目录
cd /volume1/docker/callme

# 将 env.txt 放入当前目录

# 运行容器
docker run -d \
--restart unless-stopped \
--name callme \
--hostname callme \
-p 8582:8582 \
-v $(pwd)/env.txt:/src/.env:ro \
mirotalk/cme:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'

services:
callme:
image: mirotalk/cme:latest
container_name: callme
hostname: callme
restart: unless-stopped
ports:
- '${PORT}:${PORT}'
volumes:
- ./env.txt:/src/.env:ro

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 callme
mkdir -p /volume1/docker/callme

# 进入 callme 目录
cd /volume1/docker/callme

# 将 env.txt 和 docker-compose.yml 放入当前目录

# 一键启动
docker-compose --env-file env.txt up

运行

在浏览器中输入 https://群晖IP:8582 或者 https://vchat.laosu.tech

如果是用 IP ,第一次会有提示

高级

继续前往 进入主界面,而用域名的话,会直接看到主界面

设置一个名字,例如:laosu

第一次会提示权限,必须要点 运行

用域名,第一次也有提示

可以看到用 IP 是不安全的,域名的话就不会

获取到权限后,默认会显示本地视频

三个按钮从左至右依次为

  • Toggle hide me:关闭本地视频
  • Call:发起呼叫
  • Hang up:挂断或者退出

需要在浏览器中登录另一个进程,比如用户名叫 laoli,然后在按钮上方文本框中输入对方的名字 laosu

另一端会有铃声提醒

Yes 就可以愉快的视频了

参考文档

miroslavpejic85/call-me: 🟢 Call-Me: Your Go-To for Instant Video Calls!
地址:https://github.com/miroslavpejic85/call-me

Call-me
地址:https://cme.mirotalk.com/