概述
之前汇总学习WebRTC:
- WebRTC生态简介(一):RTMP、HLS、MPEG-DASH、HTTP-FLV、WHIP、WHEP、RTSP/RTP/RTCP体系、SRS、ZLMediaKit、Janus、MediaSoup
- WebRTC生态简介(二):FreeSWITCH、OBS、FFmpeg、mpv、VLC、GStreamer、MediaMTX、nginx-rtmp-module、go2rtc、Oryx
视频会议就是WebRTC最经典的应用场景之一,本文汇总几款开源项目。
选型参考:
- 教育场景深度集成LMS(Learning Management System,学习管理系统):用BigBlueButton,LTI标准、事件流录像更专业
- 直播/一推多拉场景:用OvenMediaEngine,OM(OpenMeetings)不是为大观众设计
- 异步聊天为主:用MatterMost,OM聊天功能弱
- 需要现代SPA前端体验:Jitsi Meet更顺手
- 千人级并发:单JVM扩不动,要么换BBB+Scalelite要么换商业方案
LTI标准:Learning Tools Interoperability,用于实现LMS与第三方学习工具之间的互操作性,使教育工具能够无缝集成并共享数据。由IMS Global制定的开放标准,旨在让LMS能够以统一方式集成远程工具和内容,实现“即插即用”的教育工具生态。通过LTI,教师和学生可以在同一平台上访问多种工具和资源,无需频繁切换系统,从而提升教学效率和学习体验。
Jitsi Meet
官网,功能完整的开源(GitHub,29.7K Star,8K Fork)视频会议平台,构建在Jitsi组件之上。提供Web、iOS、Android全平台客户端,用户无需安装任何软件即可通过浏览器加入会议。支持创建即时会议、预约会议、会议室链接分享等功能。
核心特点是其简单易用和隐私保护。用户可以无需注册直接加入会议,会议链接即为会议室。支持端到端加密,确保会议内容的隐私安全。它还支持屏幕共享、录制、虚拟背景等功能。
可自托管部署,只需一台Linux服务器即可运行。官方提供Docker部署方案和一键安装脚本。对于企业使用,8x8公司提供商业版的JaaS(Jitsi as a Service)服务。
实战
官方提供在线体验,快速体验UI布局和功能,省去手动部署的耗时环节:
通知设置
BigBlueButton
简称BBB,官网,主要使用TypeScript和JavaScript开发、专为远程教育和在线培训场景设计的开源(GitHub,9.2K Star,6K Fork)视频会议系统。提供丰富的教学功能,包括共享白板、屏幕共享、分组讨论、投票、表情反馈等。与Moodle、LMS等学习管理系统有良好的集成,官方文档。
采用基于Flash时代的技术构建,后来迁移到HTML5。使用FreeSWITCH作为媒体服务器,提供稳定的音视频处理能力。设计强调教学互动,提供完整的课堂管理工具。
部署相对复杂,需要较大的服务器资源。支持高可用集群部署,可支持大规模在线课堂。社区活跃,提供详细的部署文档和企业支持服务。
Scalelite
为BBB准备、Ruby编写、开源(GitHub,502 Star,252 Fork)可扩展负载均衡器。
La Suite Meet
官网,采用Django和React构建、基于LiveKit、开源(GitHub,2.2K Star,271 Fork)视频会议应用程序,拥有媲美Zoom的卓越性能和高质量音视频体验。
特点:
- 针对大型会议的稳定性进行优化(100+人)
- 支持多屏幕共享
- 非持久性、安全聊天
- 端到端加密(即将推出)
- 会议记录
- 会议记录及摘要(目前处于测试阶段)
- 电话系统集成
- 通过强大的身份验证和访问控制机制确保安全参与
- 可定制的前端样式
Galene
官网,开源(GitHub,1.4K Star,189 Fork)视频会议系统,由希腊开发者开发维护。采用Go语言编写,提供简洁高效的架构。设计目标是提供高质量的视频会议功能,同时保持低资源消耗。
支持创建会议室、邀请用户、屏幕共享等功能。提供简洁的Web界面,用户体验良好。支持多种客户端,包括Web浏览器和原生客户端。还支持录制功能,可将会议保存为WebM文件。
部署相对简单,只需下载二进制文件并运行即可。不需要数据库或复杂的依赖,配置文件也较为简洁。适合小型团队或组织自建视频会议系统。
Jami
官网,一个基于点对点的开源(GitHub,GitLab)视频会议解决方案,不依赖于服务器,通过点对点连接进行通信。支持多平台,包括Linux、Windows、macOS、Android和iOS。官方文档。
功能:
- 即时发送消息
- 群聊
- 视频会议
- 音频通话
- 音频和视频信息
- 屏幕共享
- 文件分享
- 增强功能的扩展
- 作为SIP(会话启动协议)客户端
OpenMeetings
官网,用Java开发、开源(GitHub,686 Star,263 Fork)视频会议系统,一个进程打包视频会议+白板+文档共享+录像。
技术栈:
- 后端:Java、Spring、Apache OpenJPA(JPA ORM),跑在Tomcat/Jetty里,单JVM内嵌一切
- 前端:Apache Wicket服务端组件框架,HTML在服务器上拼好发给浏览器,不是SPA(与BBB的React前端走相反路线)
- 媒体:早年Red5(Java写的RTMP服务器,Flash时代主力),后切Kurento WebRTC,仍嵌在主进程里
- 文档转换:依赖LibreOffice headless、ImageMagick、GhostScript,上传PPT/Word自动转PDF/PNG给白板批注
- 数据库:基于OpenJPA支持MySQL、PG、MariaDB、DB2、Oracle、MS SQL Server
四层架构:
- 接入层:Tomcat/Jetty起HTTPS,Wicket处理页面请求,HTML5 client通过WebSocket长连接拿实时事件,无需Nginx反向代理。(BBB必需Nginx)
- 应用层:Java+Spring管会议状态、用户、房间、日历、聊天。Wicket在服务端把组件树渲染成HTML,模型变化→推JS更新片段。这是2005-2010那一代”服务端UI”思路,与现代React/Vue客户端渲染完全相反
- 媒体层:早年Red5(RTMP)配Flash浏览器插件,2018后切Kurento WebRTC SFU走HTML5。媒体进程仍嵌在主JVM里。(BBB拆出独立mediasoup进程)
- 数据+转换层:OpenJPA抽象SQL方言(同份代码切6种数据库不改一行);外部进程调LibreOffice、ImageMagick、GhostScript,实现上传PPT→一页一张PNG的预处理,让白板能在文档上画批注
实战
从官网下载apache-openmeetings-9.1.0.zip,解压缩,确保JDK使用17,执行命令bin/startup.sh启动,
参考OM。
Nextcloud Talk
官网,Nextcloud提供的开源(GitHub)视频会议和聊天工具。在已配置Nextcloud服务器基础上,Nextcloud Talk是一个非常好的选择。需要一些技术知识来进行设置,一旦配置完成,用户即可享受高质量的视频会议服务。
项目包括:
- spreed:2.2K Star,562 Fork,
- talk-android:Android客户端
- talk-ios:iOS客户端
- talk-desktop:517 Star,79 Fork,用JavaScript+Vue+TypeScript编写的桌面端软件
- talk-recording:录像
- talk_bot_ai:聊天助手
- summary_bot:会议总结
MatterMost
官网,面向整个软件开发生命周期的开源(GitHub,38.7K Star,8.9K Fork)团队协作工具,Go和React编写,以单个Linux二进制文件运行,并依赖PG数据库。
功能:
- 提供完整的即时通讯能力,支持频道、私信、表情回应、文件分享等基础功能。
- 内置工作流自动化引擎,可通过自定义命令和webhook来触发自动化任务,如自动通知、代码部署提醒、事件响应流程等。
- 支持原生语音通话和屏幕共享,无需额外安装第三方插件,就能让远程团队直接沟通。
- 生态集成:涵盖开发工具(如GitLab、Jira、Jenkins)、办公软件和第三方服务,可通过webhook、slash commands、API等方式扩展能力
- AI集成:在聊天界面调用LLM来辅助排查问题、生成代码摘要或撰写文档。