# DSRC **Repository Path**: diamond999/dsrc ## Basic Information - **Project Name**: DSRC - **Description**: 基于WebRtc的实时音视频通话,支持安卓和WEB端,提供缩放、冻屏、拍照、录像等功能。 - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-01-27 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
基于WebRtc的实时音视频通话,支持安卓和WEB端,提供缩放、冻屏、拍照、录像等功能。
这只是一个半成品,部分功能还没有完善,后续会结合不同的要求进行改造。
能够用于点对点交流,远程检查等场景。
gitee:基于WebRtc的实时音视频通话,支持安卓和WEB端,提供缩放、冻屏、拍照、录像等功能。
欢迎交流,QQ:2101242972,加好友时给出:DSRC
邮箱:yun360_nc@qq.com
1.下载dsrc.apk,安装到手机。
2.浏览器打开:https://180.76.108.84:5100
环境说明:采用Ubuntu 24.04.1 LTS

1)更新:sudo apt update
2)配置防火墙:
sudo ufw allow 3478/tcp
sudo ufw allow 5100/tcp
sudo ufw allow 5101/tcp
sudo ufw allow 5173/tcp
sudo ufw allow 5349/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/udp
sudo ufw allow 52000:52500/udp
安装node和npm:
下载、解压、移动、配置、生效、检验
wget https://nodejs.org/dist/v24.8.0/node-v24.8.0-linux-x64.tar.xz
tar -xvf node-v24.8.0-linux-x64.tar.xz
sudo mv node-v24.8.0-linux-x64 /usr/local/node
echo 'export PATH="/usr/local/node/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
node -v
npm -v

安装nginx
sudo apt install nginx
systemctl status nginx

安装web应用
npm run build

会在WEB目录下生成dist目录,内容如下:

3)将dist目录下的内容全部复制到/usr/local/dsrc/web下。
4)配置nginx
cd /etc/nginx
cp nginx.conf nginx.conf.bak
rm nginx.conf
nano nginx.conf
nginx.conf文件http{里面}如下:
server {
# 监听5173端口并启用SSL
listen 5173 ssl;
server_name 180.76.108.84;
# SSL证书配置
ssl_certificate /usr/local/dsrc/server/turn_cert.pem;
ssl_certificate_key /usr/local/dsrc/server/turn_key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
# 前端静态文件服务
location / {
root /usr/local/dsrc/web;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
# API请求代理配置 - 关键修改
location /api/ {
proxy_pass http://180.76.108.84:5101/api/;# 替换为你的实际IP或域名
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 如果需要处理文件上传,添加以下配置
client_max_body_size 10M;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}

5)ctrl+X,保存退出 6)重新装载nginx
nginx -s reload

7)测试:打开浏览器,输入https://你的IP:5173

可能会出现证书不安全,因为是自签名证书,点击信任即可。

点击高级

点击继续访问即可。
5.安装信令服务器和录制服务器 1)建立目录:
mkdir /usr/local/dsrc
mkdir /user/local/dsrc/server
mkdir /user/local/dsrc/web
2)赋值文件:将signal.js和rec.js以及turn_cert.pem、turn_key.pem\package.json(在源码的server目录下)复制到/user/local/dsrc/server目录
3)安装依赖:
cd /usr/local/dsrc/server
npm install

4)测试运行:
node signal

node rec

6.安装coturn
<<<<<<< HEAD 1)安装
sudo apt install coturn
systemctl status coturn

2)配置
sudo cp /etc/turnserver.conf /etc/turnserver.conf.backup
rm /etc/turnserver.conf
nano /etc/turnserver.conf
turnserver.conf内容如下:
# 基础配置
listening-port=3478
tls-listening-port=5349
listening-ip=0.0.0.0
#你的ip
external-ip=180.76.108.84
#设置为服务器内网IP
relay-ip=192.168.16.2
#你的IP或域名
realm=180.76.108.84
# 认证配置
user=web1:abc123
user=zhyi:abc123
lt-cred-mech
# Nonce 相关设置(解决 438 错误)
stale-nonce=600
# 会话生命周期设置(解决会话断开)
#min-allocate-lifetime=600
max-allocate-lifetime=3600
channel-lifetime=600
# 性能优化
relay-threads=8
max-port=52500
min-port=52000
# 安全配置
cli-password=your_secure_password_here
cert=/usr/local/dsrc/server/turn_cert.pem
pkey=/usr/local/dsrc/server/turn_key.pem
# 安全配置 - 限制TLS版本和密码套件
no-tlsv1
no-tlsv1_1
3)重新启动
systemctl restart coturn
systemctl status coturn

4)测试
(1)手机安装apk
(2)启动WEB端
(3)查看信令服务器(在服务器上/usr/local/dsrc/server目录下运行:node signal)包含relay的地址即可,要求双向都包含relay地址,其它的地址还有Host和srflx。


至此,就全部完成了。
7.自行启动,安装PM2
nginx和coturn都能随开机自行启动,但signal和rec不行自行启动,可安装PM2
1)安装
npm install pm2 -g

2)配置
pm2 start /usr/local/dsrc/server/signal.js --name sig pm2 start /usr/local/dsrc/server/rec.js --name rec pm2 save
3)测试
pm2 logs sig
pm2 logs rec


1.总体功能 目前只支持点对点视频通讯,通过房间号区分,一个房间两个客户端(一个WEB,一个安卓) 安卓端是被动连接,WEB端是主动连接。
2.安卓端
1)初始页:
这里可以修改参数。
2)通话页:

(1)画面:显示当前时间、分辨率和帧率,这个是在视频中,对方也能看到。
显示状态:包括摄像头和rtc通讯,这个是本地,对方看不到。
(2)按钮:关闭摄像头:将摄像头关闭,画面黑屏或冻住。
切换摄像头:在前后摄像头切换。
结束通话:退出当前通话。
(3)操作:
手机旋转:支持手机旋转,只要手机旋转没有锁定,当旋转手机时,画面会跟随旋转。
手指缩放:双指触控屏幕时,会缩放本地视频。
3.WEB端
1)WEB端只给出了组件应用,具体需要结合业务场景使用
const param=ref({
user: "NEWSWEB4",
room: "100",
ip: "180.76.108.84"
})
</script>
<template>
<div>
<videoView class="view" :param="param"/>
</div>
</template>
参数:企业名称、房间号、信令服务器地址、
2)界面功能

(1)绘制工具:目前没有完整实现,只提供了两种实现
一是标记:鼠标点击视频给出一个三角形标记,二是画线:鼠标在视频移动会画一条直线,均会通过性灵服务器传送给安卓端。
清除按钮:清除当前的绘制。

(2)缩放控制按钮:

放大:通知安卓端将视频放大。
缩小:通知安卓端将视频缩小。
还原:将视频还原大小。
缩放信息会同步显示在右上角的分辨率信息栏。

(3)冻屏
状态按钮:冻屏或解除冻屏。


(4)拍照、录像

WEB端

录制端

录制文件在/usr/local/dsrc/sever/uploads目录下,照片在photo子目录下

录制视频可以改为全程录制,录制过程可以缩放、冻屏、拍照等操作,绘制内容不会录制到视频中,如果需要可以改造。