Back to Work

Project / 001 · 2026

Meeting|跨端实时会议与屏幕共享系统

从管理后台、会议 Web 端到 Android、iOS 与自建 LiveKit SFU,完成一套可部署、可观测、可持续优化的跨端实时会议产品。

项目背景

这个项目不是单一的视频房间页面,而是一套完整的实时会议产品:管理端负责会议与权限,Web 端承担浏览器入会和观看,Android 与 iOS 负责移动参会和屏幕共享,后端统一管理会议生命周期、访问控制、消息、审计与媒体策略,自建 LiveKit SFU 负责实时音视频转发。

项目真正困难的地方,是让多端在同一套业务规则下稳定协作。摄像头正常并不代表屏幕共享一定流畅;手机采集、编码器、跨境上行、SFU、观看端网络和浏览器解码,任何一段出现短时拥塞,都可能表现为花屏、冻结或恢复缓慢。

我的工作

  • 梳理超级管理员、子管理员、参会者和游客的权限与数据范围。

  • 完善会议创建、标题预填、创建来源、会议列表、结束与清理等生命周期。

  • 打通 Web、NestJS、PostgreSQL、Redis、LiveKit、Android 和 iOS 的完整链路。

  • 建设移动端屏幕共享、设备音频、聊天、快捷互动、参会者控制与异常恢复。

  • 为 Android 建立 Release/R8 生产模板、签名校验与 APK 交付流程。

  • 建立 QoS 与 RTC 诊断思路,区分发布端、观看端、屏幕轨和摄像头轨。

  • 完成 Docker 生产部署、健康检查、数据卷保护、备份清单与生产包交付。

核心难点

屏幕共享卡顿最终不能用“服务器带宽够不够”一句话解释。项目审计发现,真实问题可能同时来自 TCP 退化、高 RTT 下的队头阻塞、iOS ReplayKit 的软件 JPEG/IPC 管线、单层编码缺少订阅自适应,以及统计采样无法捕捉 1~3 秒的突发冻结。

因此处理方式不是盲目调整 SFU 参数,而是建立端到端证据链:采集屏幕轨的编码帧、码率、NACK/PLI、冻结、抖动、候选协议和解码数据,再判断问题发生在采集、编码、上行、SFU、下行还是解码阶段。移动端策略也收敛到更稳定的画质上限,并避免在会议中反复重建媒体轨道。

交付结果

  • 后端自动化测试:100 项通过。

  • 全功能回归:18 项业务链路通过,临时数据与文件完成清理。

  • Android 真机覆盖安装、匿名入会、摄像头/麦克风切换、屏幕与设备音频共享、前后台切换、断网恢复和异常重启。

  • 全新 Docker 重建后,PostgreSQL、Redis、LiveKit、API、Web 与网关六个服务正常运行。

  • 生产包仅保留编译产物、部署脚本和必要模板,不包含前端/后端/移动端源码与 Source Map。

项目价值

这个项目最有价值的不是“做出一个会议页面”,而是建立了一条从产品权限、跨端媒体、弱网诊断到生产交付的完整工程链路。核心版本已经完成并验收;最新架构审计中识别出的 UDP 恢复、iOS 管线和 QoS v3 属于持续性能优化方向,不冒充已经完成的结果。