UniApp用 LiveKit 实现视频会议

发布时间:2026/8/20 10:09:10

UniApp用 LiveKit 实现视频会议
一、要解决什么问题企业会议和「点一下就打过去」的音视频通话不是一类产品会议可以先预定、后入会预定当下不必占用摄像头和 SFU 房间。入会方式要多会议号、链接、二维码不要求双方是好友。主持人要能邀请、全体静音、结束本场普通人只能离开最后一个人离开不能把整场会关掉。同一人可能同时是两场会的主持人信令必须按meetingId隔离否则会串会。端不一样H5 能直接跑livekit-clientApp 用 web-view 包一层 HTML微信小程序没有会议室。所以架构上必须坚持一件事LiveKit 只负责音视频转发不负责「这场会还在不在」。二、总体架构三层职责层干什么不干什么业务后端MeetingService预定、会议号、成员、密码、人数、到期结束、签发 JWT不传媒体IM 信令 type300–305邀请、进房、离房、结束、媒体状态不走好友校验LiveKit SFUroom.connect(url, token)后的发布 / 订阅不知道 OA 的 scheduled / ended房间名约定会议m_{meetingId}一场会固定一个房间可反复进出三、数据模型一场会、一群人两张表meeting会议号、标题、发起人、开始时间、时长、密码、状态、room_name、入会链接。状态机scheduled已预定截止前可进含主持人清场之后ongoing有人在房内ended超过startTime durationMinutes才进入不能再进cancelled后台取消meeting_member角色host / guest邀请状态麦 / 摄像头 / 共享以及最关键的in_room。产品规则写在字段上in_room表示「当前是否在 LiveKit 房间」不是「有没有被邀请过」。离开只改自己的in_roomfalse不改会议状态。主持人点「结束」会踢所有人但状态仍等到截止时间才变成ended。人数上限 100含主持人在join和invite两处卡住。四、预定生成凭证不进 LiveKit接口POST /api/v1/meeting/create。预定时做这些事生成不重复的 9 位会议号用配置模板拼 H5 入会链接例如https://www.minglina.com/oah5/subpages/meeting/join?code{code}先save()拿到雪花 id再写room_name m_{id}主持人写入meeting_memberin_roomfalse返回会议号、链接、二维码不带 LiveKit token会议「预定成功」只是落库。五、进房业务校验 签发 JWT接口POST /api/v1/meeting/join。服务端顺序LiveKit 配置必须完整url / api-key / api-secret会议仍有效未 ended / cancelled未过截止时间有密码则校验未加入过则插入成员已在房断线重连只刷新姓名和 token把in_roomtrue会议标成ongoing用户状态设为忙线IM 广播MEETING_JOIN用会议 id 纠正房间名防止历史数据里的m_null签发 LiveKit Access TokenToken 不依赖 LiveKit 官方 Java SDK用 Auth0 JWT 按 LiveKit 规范自己签返回给前端的凭证是另有POST /token已经在房的人只刷新凭证避免弱网重连再走一遍 join。心跳POST /heartbeat刷新忙线过期时间避免被当成空闲。六、客户端怎么连上 LiveKit1. 端差异2. 进房时序会议室页onLoad先调/token失败再/join从详情页进来可能已经 join 过connectLiveKitRoom({ url, token, video: false, audio: true })默认关麦、关摄像头需要时再开每 20 秒心跳页面卸载调/leave并disconnect连接封装里几件必须注意的事autoSubscribe: true远端发布后自动订阅音频订阅按identity sid去重避免同一轨挂两个audio视频每次开关都强制重新绑定反复开关摄像头后远端才能再看到画面屏幕共享轨和摄像头轨分开停共享不要清掉摄像头TrackMuted时如果是音频不要当成关摄像头否则全体静音后画面会黑七、信令IM 300–305且必须跳过好友检查会议不是通话扫码进来的人往往不是好友。IM 收包时要先按类型分流type含义300MEETING_INVITE邀请301MEETING_JOIN有人进房302MEETING_LEAVE有人离房303MEETING_ENDpermanenttrue截止结束false主持人清场304MEETING_MEDIA麦 / 摄像头 / 共享全体静音带audioOnly305MEETING_REJECT拒绝邀请后端广播时type 100的信令不做好友校验。App 会议室在 web-view 里原生 IM 收包后要再转一份*App事件用evalJS调handleMeetingEventH5 才能更新成员列表。八、控场离开、结束、全体静音离开只改自己inRoomfalse广播LEAVE。最后一个人走了会议还在截止前还能再进。主持人结束kickAllOut(..., permanentfalse)所有人被请出状态不变。客户端收到MEETING_END后断开 LiveKit 并退出页面。截止前别人仍可再 join。到期结束任意info / mine / join都会走expireIfDue。超过startTime duration才statusended并permanenttrue踢人之后不能再进。全体静音只改audiopayload 带audioOnly: true不要带 video/screen避免前端把视频也关了。主持人不静音自己。共享屏幕同一时刻只允许一人其他人的screen清掉。九、串会1. 房间名写成m_nullbuildMeetingRoomName(meeting.getId())若在save()之前调用id 为空LiveKit 房间就是m_null。所有会议进同一个 SFU 房间画面和声音会串。正确顺序先保存再用主键更新room_name。进房时ensureRoomName()若发现m_null/ 空按当前 id 改写。buildMeetingRoomName遇到空 id 直接抛错。2. IM 不带meetingId过滤一个人同时主持 A、B 两场会人在 A 里也会收到 B 的 JOIN。客户端必须会议室页忽略其它会的信令刷新成员时丢掉inRoomfalse的人。十、可以抄走的实现清单媒体与信令分离SFU 只转发状态机在自己库里。预定不进房join 才签发 JWT。会议房间名绑定业务主键且必须在主键生成之后。信令号段独立并跳过好友检查。每条会议信令带meetingId客户端过滤。离开 ≠ 结束主持人清场 ≠ 到期结束。全体静音只动音频轨。H5 用 CDN 加载 SDKApp 用 web-view 对齐同一版本。不要用beforeunload断开 LiveKit。入会链接用服务端模板不要用当前页 origin。媒体层可以换成别的 SFU上面这套业务边界仍然成立。

相关新闻

大众点评爬虫实战:用 dianping_spider 从零到一搞定店铺与评论数据采集

大众点评爬虫实战:用 dianping_spider 从零到一搞定店铺与评论数据采集

2026/8/20 10:09:10

大众点评爬虫实战:用 dianping_spider 从零到一搞定店铺与评论数据采集 【免费下载链接】dianping_spider 大众点评爬虫(全站可爬,解决动态字体加密,非OCR)。持续更新 项目地址: https://gitcode.com/gh_mirrors/di/…

XMC1200 MCU在电机控制与数字电源中的实战应用与优化

XMC1200 MCU在电机控制与数字电源中的实战应用与优化

2026/8/20 10:09:10

1. 从“小透明”到“瑞士军刀”:我与XMC1200的初遇 很多工程师朋友在选型时,目光总会不自觉地被那些主频动辄几百兆赫兹、外设豪华、封装动辄上百引脚的主流大厂MCU所吸引。几年前的我也不例外,总觉得资源越多越好,性能越强越稳。…

Windows 凭空多出16块屏幕:parsec-vdd 虚拟显示器完整配置指南

Windows 凭空多出16块屏幕:parsec-vdd 虚拟显示器完整配置指南

2026/8/20 10:09:10

Windows 凭空多出16块屏幕:parsec-vdd 虚拟显示器完整配置指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 刚租了一台没有显示器的云 GPU 主机,装好 W…

大语言模型上下文管理实战:五种压缩策略对抗Context Rot

大语言模型上下文管理实战:五种压缩策略对抗Context Rot

2026/8/20 12:09:15

这次我们来看一个在本地部署和实际应用中经常遇到的技术挑战:上下文管理。当你在运行大语言模型、长文本处理或多轮对话任务时,是否遇到过显存爆炸、推理速度骤降或者对话质量突然“失忆”的情况?这很可能就是上下文窗口过长导致的。今天要讨…

基于大数据的营销数据分析系统的设计与实现(源码+lw+部署文档+讲解等)

基于大数据的营销数据分析系统的设计与实现(源码+lw+部署文档+讲解等)

2026/8/20 12:09:15

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026壁纸图片网站推荐TOP5:创作者寻找高清背景图的实用指南

2026壁纸图片网站推荐TOP5:创作者寻找高清背景图的实用指南

2026/8/20 12:09:15

引言壁纸图片正在成为内容创作者使用频率越来越高的一类视觉基础素材。电脑桌面、手机壁纸只是最基础的用途,网站首屏、PPT背景、公众号封面、短视频背景、电商Banner、海报底图和社交媒体视觉,都离不开高质量图片。根据2026年发布的全球Stock Images市场…

AI辅助公益广告制作全流程:从提示词到设计稿的实战指南

AI辅助公益广告制作全流程:从提示词到设计稿的实战指南

2026/8/20 12:09:15

最近在尝试用AI工具辅助内容创作时,发现很多同学对如何将AI的创意输出转化为实际可用的宣传物料感到困惑。特别是生成一些公益性质的宣传文案或广告图后,下一步该怎么做往往成了难题。本文将以“豆包”AI生成公益广告为例,完整拆解从文案生成…

基于SSM的农业机械销售系统(源码+lw+部署文档+讲解等)

基于SSM的农业机械销售系统(源码+lw+部署文档+讲解等)

2026/8/20 12:09:15

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

MiniMax H3视频生成模型结合Lora微调实战:从本地部署到风格定制

MiniMax H3视频生成模型结合Lora微调实战:从本地部署到风格定制

2026/8/20 11:59:14

1. 先搞清楚 MiniMax H3 和 Lora 到底能做什么如果你在找“无限制生成视频”或者“免费无限生成视频”的工具,那大概率会失望。目前所有公开的AI视频生成技术,无论是Sora、Runway还是MiniMax,都受限于算力、模型能力和平台规则,不…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

2026/8/20 0:08:45

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com…

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

2026/8/20 0:08:45

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 判断你是否…

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

2026/8/20 0:08:45

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 按 3MF 官方规范的字面意思,一…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…