更新记录
1.2(2026-08-24)
下载此版本
屏幕共享功能兼容安卓 苹果 WEB端
平台兼容性
uni-app(5.06)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
哟通会议(YooTong Meeting)功能介绍
项目概述
哟通会议是一款支持多端的实时视频会议应用,提供会议室创建、音视频通话、屏幕共享、实时聊天、VIP会员、余额充值等完整功能。系统基于 WebRTC + SRS 流媒体服务器架构,支持 Android、iOS(H5)和 Web 管理后台三端协同工作。
系统架构
项目由五个核心组件组成:
| 组件 |
目录 |
技术栈 |
说明 |
| 主服务端 |
server |
Node.js + Koa2 + MySQL + WebSocket |
提供 RESTful API 和 WebSocket 信令服务 |
| 管理后台 |
adminclient |
Vue 2 + Vite + Element UI |
系统管理控制台(Web 端) |
| Android 客户端 |
ntmetand |
UniApp Vue 2 + WebView |
安卓端 App,内嵌 HTML 实现音视频 |
| iOS 客户端 |
ntmetios |
UniApp Vue 2 |
苹果端 H5 应用 |
| iOS 屏幕共享服务 |
iosserver |
Node.js + WebSocket + FFmpeg |
接收 iOS 屏幕帧并推流到 SRS |
核心功能
1. 用户系统
- 自动注册/登录:基于设备唯一标识(deviceId)自动完成注册和登录,无需手动输入账号密码
- 用户信息管理:修改昵称、上传头像(自动生成 DiceBear 头像作为默认头像)
- 用户编号:系统自动生成 6 位唯一用户编号
- 角色体系:普通用户 / 管理员
- 账户余额:用于创建会议室消费
- VIP 会员:按会议室类型购买 VIP,享受对应类型会议室免费创建权益
2. 会议室系统
- 会议室类型:支持小型会议(5人)、中型会议(10人)、大型会议(20人)等多种规格
- 创建会议室:选择类型 → 校验 VIP 或余额 → 自动扣费 → 生成 6 位会议室编号
- 加入会议室:输入会议室编号 → 无密码直接进入 / 有密码需输入密码
- 公开会议室:可在首页公开列表展示,供用户直接加入
- 会议室设置:
- 音频开关(允许/禁止成员开启音频)
- 视频开关(允许/禁止成员开启视频)
- 屏幕共享开关
- 密码修改
- 成员管理:
- 实时成员列表(显示音视频状态、屏幕共享状态)
- 拥有者可踢人、禁音、禁视频
- 成员加入/离开实时通知
- 横竖屏自适应:自动识别设备方向,适配对应布局
3. 音视频通话
- WebRTC 推流:基于 SRS 4.0 旧版 API(
/rtc/v1/publish/)实现 WebRTC 推流
- WebRTC 拉流:基于 SRS 4.0 旧版 API(
/rtc/v1/play/)实现 WebRTC 拉流
- SRS 流媒体服务器:线上地址
rtc.lexuntongai.com,应用名 live
- 流命名规则:
mettingroomsc_{meetingId}/{userId}(普通音视频流)
- ICE 连接管理:非阻塞监控 ICE 连接状态,支持自动重连
- 音频独立播放:所有用户音频同时播放,支持静音控制
- 视频切换:点击用户头像切换大视频显示,长按弹出控制菜单(仅拥有者)
- Android WebView 方案:安卓端通过 WebView 嵌套本地 HTML 实现音视频和信令,原生与 HTML 通过
evalJS + uni.postMessage 通信
4. 屏幕共享
- 仅视频共享:屏幕共享仅传输视频,不传输音频
- 音频流保留:发起屏幕共享时,原音视频流继续推流,其他用户仍可拉取音频
- 视频流切换:其他用户观看该用户时,视频画面切换为屏幕共享画面
- iOS 特殊方案:
- iOS 端通过
getDisplayMedia 捕获屏幕画面
- 以 15fps 捕获 JPEG 帧通过 WebSocket 发送到
iosserver
iosserver 通过 FFmpeg 将图片帧编码为 H.264 并推送到 SRS(RTMP)
- 其他用户通过 WebRTC 拉流观看屏幕共享
- 信令通知:开始/停止屏幕共享通过 WebSocket 信令实时广播给会议室所有成员
5. 实时聊天
- 文字聊天:支持在会议室内发送文字消息
- 实时广播:通过 WebSocket 实时推送聊天消息
- 消息历史:支持查询历史聊天记录
- 临时存储:聊天数据仅临时存储在内存变量中,不持久化到数据库
6. 支付系统
- 余额充值:多种充值模板可选(10元/50元/100元/200元/500元),含赠送金额
- VIP 购买:按会议室类型购买 VIP 会员(月度/季度/年度)
- 创建会议室扣费:非 VIP 用户创建会议室时从余额扣费
- 订单管理:完整的支付订单记录和状态追踪
7. 管理后台
- 数据看板:用户数、会议室数、订单数等核心指标统计
- 用户管理:用户列表、余额调整、启用/禁用用户、发放 VIP
- 会议室类型管理:增删改查会议室类型(名称、人数上限、价格)
- 充值模板管理:增删改查充值模板(金额、赠送、标题、描述)
- VIP 模板管理:增删改查 VIP 模板(时长、价格、原价)
- 订单管理:查看所有支付订单记录
- 会议室列表:查看所有会议室及状态
技术特性
通信架构
- RESTful API:HTTP 接口处理会议室管理、用户管理、支付等业务
- WebSocket 信令:实时处理用户加入/离开、推流通知、聊天消息、屏幕共享、成员控制
- WebSocket 断线重连:自动检测连接状态并重连
安全机制
- JWT 认证:基于 JSON Web Token 的用户身份认证
- Token 自动刷新:客户端检测到 token 过期时自动重新登录
- 请求队列:未认证请求自动排队,登录完成后统一刷新
- 接口分级:公开接口(会议室列表、类型查询等)无需认证,业务接口需认证
流媒体
- SRS 服务器:线上部署,支持 WebRTC 推拉流和 RTMP 推流
- STUN 服务器:
stun:stun.l.google.com:19302、rtc.lexuntongai.com:3478
- FFmpeg 编码:iOS 屏幕共享图片帧通过 FFmpeg 编码为 H.264 实时推流
数据库设计
| 表名 |
说明 |
users |
用户表(设备ID、编号、昵称、余额、VIP到期时间、状态、角色) |
meeting_types |
会议室类型表(名称、最大人数、价格) |
meetings |
会议室表(创建者、类型、名称、编号、密码、音视频开关、状态) |
meeting_members |
会议成员表(会议室ID、用户ID、音视频状态、屏幕共享状态、加入/离开时间) |
chat_messages |
聊天消息表(会议室ID、发送者ID、内容、类型) |
payment_orders |
支付订单表(用户ID、订单号、金额、类型、状态) |
recharge_templates |
充值模板表(金额、赠送、标题、描述) |
vip_templates |
VIP 模板表(会议室类型、时长、价格、原价) |
user_vip |
用户 VIP 表(用户ID、会议室类型ID、到期时间) |
screen_share_sessions |
屏幕共享会话表(会议室ID、用户ID、流ID、RTMP地址、状态) |
system_config |
系统配置表(键值对配置) |
部署信息
- 服务端 API:
https://api.lexuntongai.com:3001
- WebSocket:
wss://api.lexuntongai.com:3001
- SRS 流媒体:
https://rtc.lexuntongai.com
- iOS 屏幕共享服务:
https://api.lexuntongai.com:3000
- SRS RTMP 推流:
rtmp://rtc.lexuntongai.com/live
- 头像服务:
https://api.lexuntongai.com:3001/avatar