LiveKit 实时通信平台介绍
开源 WebRTC SFU 实时音视频与数据通信平台,提供完整 SDK 生态与 AI Agents 框架,适合构建视频会议、直播、语音助手等实时应用。
LiveKit 实时通信平台介绍
LiveKit 是一个开源的、面向开发者的实时音视频与数据通信平台,基于 WebRTC 的 SFU(Selective Forwarding Unit)架构构建。它提供从媒体服务器、客户端 SDK、服务端 SDK 到 AI Agents 的完整技术栈,让你能在几周内而非几个月内构建生产级实时通信应用。
什么是 LiveKit?
LiveKit 由 livekit.io 团队于 2021 年发布,核心媒体服务器采用 Go 语言编写,底层基于 Pion WebRTC 实现。项目在 GitHub 上已获得 19,000+ Stars,是目前 WebRTC SFU 领域增长最快、生态最完整的开源方案之一。
与传统「只提供媒体服务器、其余自己搭」的方案不同,LiveKit 的定位是 端到端实时通信栈(End-to-end Realtime Stack):
- LiveKit Server:分布式 SFU 媒体服务器
- Client SDKs:覆盖 Web、iOS、Android、Flutter、React Native、Unity、Rust 等全平台
- Server SDKs:Go、Node.js、Ruby、Java/Kotlin、Python 等后端语言
- Ecosystem 组件:Agents(AI 参与者)、Egress(录制/推流)、Ingress(外部流接入)、SIP 等
无论是视频会议、在线教育、直播互动、IoT 远程控制,还是 AI 语音助手,LiveKit 都试图提供「开箱即用」的基础设施。
核心架构深度解析
1. SFU(选择性转发单元)媒体路由
LiveKit 的核心是 SFU 架构,而非 MCU(多点控制单元):
| 架构 | 工作方式 | 延迟 | CPU 消耗 | 适用场景 |
|---|---|---|---|---|
| MCU | 服务端混流/转码后分发 | 较高 | 极高 | 传统电话会议 |
| SFU | 服务端选择性转发 RTP 包,不转码 | 极低 | 低且可预测 | 现代 WebRTC 应用 |
SFU 的关键优势:
- 不做转码:媒体包从发布者直接转发给订阅者,延迟通常可控制在 100–300ms
- 带宽高效:每个参与者只接收自己订阅的轨道(Track),而非所有人的全量流
- CPU 可预测:转发逻辑远轻于混流,单机可支撑更多并发
LiveKit 的 SFU 实现包含精细的媒体处理管线:
- Forwarder(转发器):根据订阅者带宽和可见性选择最优视频层
- StreamTrackerManager:监控各层码率、可用性和流健康状态
- Dynacast:动态调整发布层,减少不必要的上行带宽
- Simulcast / SVC:支持 VP8/VP9/H.264/AV1,自适应多分辨率
2. 分布式 Mesh 集群
这是 LiveKit 相对 mediasoup、Janus 等方案最显著的架构差异:
参与者 A (东京) ──→ Node 1 (东京)
↕ Redis 协调
参与者 B (纽约) ──→ Node 2 (纽约) ←──→ Node 3 (法兰克福)
↕
参与者 C (法兰克福) ──→ Node 3
- 部署为 Redis 协调的同质节点集群
- 单个 Room 可 跨多台物理服务器 分布
- 参与者连接到 最近的节点,降低最后一公里延迟
- 支持 多区域(Multi-region) 部署,实现全球低延迟
这与 Jitsi 的 Octo 级联 SFU 思路类似,但 LiveKit 将其作为 默认行为 而非可选扩展,降低了分布式部署的门槛。
3. Room / Participant / Track 数据模型
LiveKit 采用清晰的三层抽象:
| 概念 | 说明 |
|---|---|
| Room(房间) | 参与者的容器,有唯一名称和生命周期 |
| Participant(参与者) | 房间内的用户或 Bot,有 Identity 和权限 |
| Track(轨道) | 具体的媒体流:音频、视频或自定义 Data Channel |
这种模型让以下功能天然成立:
- Selective Subscription(选择性订阅):只订阅需要的轨道,节省带宽
- Speaker Detection(说话人检测):自动识别当前发言者
- Moderation APIs(管理 API):静音、踢人、更新权限
- End-to-End Encryption(端到端加密):在 SFU 之上增加 E2EE 层
4. 认证与安全
- 使用 JWT Access Token 进行身份认证和权限控制
- Token 编码:Identity、Room 名称、发布/订阅权限、有效期
- 支持 Webhook 事件通知(参与者加入/离开、录制完成等)
- 生产环境支持 TURN 中继,穿透复杂 NAT/防火墙
5. 网络与连接鲁棒性
- 支持 UDP / TCP / TURN 多种传输方式
- ICE 候选收集与连接迁移
- 自适应码率(ABR)与丢包补偿
- 内置连接质量监控
生态系统详解
LiveKit 不只是「一个 SFU 服务器」,而是一个完整的实时通信产品栈:
LiveKit Agents — AI 实时参与者
livekit/agents 是 LiveKit 最具差异化的组件之一:
- Agent 作为 普通 Participant 加入 Room
- 框架串联:STT(语音转文字)→ LLM → TTS(文字转语音)
- 支持 Voice Activity Detection(VAD) 和打断处理
- 2025 年 4 月 Agents 1.0 发布,2026 年 Python SDK 已达 1.5,支持 MCP 工具调用
- 典型场景:AI 客服、语音助手、实时翻译、AI 陪练
Egress — 录制与推流
livekit/egress 负责媒体出站:
- 合成录制(Composite Recording):将整个 Room 录制成 MP4
- 单轨录制(Track Recording):导出单个参与者的音视频
- 实时推流:RTMP 推送到 YouTube/Twitch 等
- HLS 输出:生成自适应流媒体
Ingress — 外部流接入
livekit/ingress 负责媒体入站:
- RTMP 推流接入(OBS Studio 等)
- WHIP 协议支持
- HLS / MP4 文件拉流
- 将外部流作为 Room 内的 Track 发布
SIP 集成
- 支持 PSTN 电话接入
- 企业电话系统与 WebRTC Room 互通
- LiveKit Cloud 提供托管 SIP 服务
SDK 与工具链
客户端 SDK
| 平台 | SDK | UI 框架支持 |
|---|---|---|
| Web / TypeScript | client-sdk-js | React 组件 |
| iOS / macOS | client-sdk-swift | SwiftUI |
| Android | client-sdk-android | Jetpack Compose |
| Flutter | client-sdk-flutter | 原生 |
| React Native | client-sdk-react-native (Beta) | 原生 |
| Unity WebGL | client-sdk-unity-web | — |
| Rust | client-sdk-rust | — |
所有 SDK 提供统一的 Room API:connect() → publishTrack() → subscribe() → disconnect()
服务端 SDK
| 语言 | 用途 |
|---|---|
| Go | Token 生成、Server API、Webhook 处理、自动化 Bot |
| Node.js / TypeScript | 同上,适合 JS 全栈团队 |
| Ruby / Java / Python / PHP | 社区或官方维护 |
开发与运维工具
- LiveKit CLI (
lk):Token 生成、Room 管理、负载测试 - Docker 镜像:单容器快速部署
- Helm Charts:Kubernetes 生产部署
- LiveKit Cloud:托管服务,免运维
部署方式
1. 本地开发(最快上手)
# 安装
brew install livekit # macOS
# 或 curl -sSL https://get.livekit.io | bash # Linux
# 开发模式启动
livekit-server --dev
# API Key: devkey / API Secret: secret
# 生成 Token
lk token create \
--api-key devkey --api-secret secret \
--join --room my-room --identity user1 \
--valid-for 24h
访问 example.livekit.io 输入 Token 即可测试。
2. 自托管(Self-host)
- 单二进制部署,配置
livekit.yaml - Docker Compose 或 Kubernetes(Helm)
- 需要 Redis(分布式模式)、TURN 服务器(生产环境)
- 支持 AWS / GCP / Azure / 腾讯云 / 本地机房
3. LiveKit Cloud(托管)
- 与开源代码 完全一致,无厂商锁定
- 全球分布式 Mesh,自动扩缩容
- 免费额度:每月带宽和转码 Credits
- 额外提供:SIP、Agent 部署、可观测性面板
LiveKit vs 竞品深度对比
LiveKit vs mediasoup
| 维度 | LiveKit | mediasoup |
|---|---|---|
| 语言 | Go | C++ / Node.js |
| 定位 | 完整实时通信产品栈 | 底层 SFU 库 |
| 开箱内容 | Server + SDK + Agents + Egress + Ingress | 仅 SFU 核心,其余自建 |
| 分布式 | 内置 Redis Mesh,默认支持 | 需自行实现级联 |
| 客户端 SDK | 官方全平台 SDK | 社区 SDK,质量参差 |
| AI 集成 | Agents 框架原生支持 | 无,需自行集成 |
| 上手时间 | 数天到数周 | 数周到数月 |
| 灵活性 | 中等(约定优于配置) | 极高(底层可控) |
| 授权 | Apache 2.0 | ISC |
选型建议:需要快速上线、团队不想深入 WebRTC 细节 → LiveKit;需要极致定制、有 WebRTC 专家 → mediasoup。
LiveKit vs Janus Gateway
| 维度 | LiveKit | Janus Gateway |
|---|---|---|
| 架构 | 现代 Go SFU + 分布式 Mesh | C 语言插件化网关 |
| 插件生态 | 统一 API + 独立微服务(Egress/Ingress) | 丰富的 C 插件(SIP、Streaming、VideoRoom 等) |
| 开发体验 | 现代 SDK,TypeScript 友好 | REST/WebSocket API,偏底层 |
| SIP/PSTN | 官方 SIP 服务(Cloud) | 成熟的 SIP 插件 |
| 社区活跃度 | 快速增长,AI 方向引领 | 成熟稳定,偏传统 VoIP |
| 学习曲线 | 较低 | 较高 |
选型建议:新项目、Web/移动端为主、需要 AI Agent → LiveKit;已有 Janus 运维经验、重度 SIP 集成 → Janus。
LiveKit vs Jitsi Videobridge
| 维度 | LiveKit | Jitsi Videobridge |
|---|---|---|
| 完整度 | Server + SDK + 生态一体化 | Jitsi Meet 全家桶(Jicofo + Prosody + JVB) |
| 开箱即用 | SDK 直接集成到自有 App | 主要面向 Jitsi Meet 会议 UI |
| 定制化 | 完全嵌入自有产品 | 定制 Jitsi Meet 或只用 JVB |
| 分布式 | 内置 Mesh | Octo 级联(类似思路) |
| AI 能力 | Agents 原生框架 | 无原生 AI 框架 |
| 品牌/UI | 无捆绑 UI,Bring Your Own UI | Jitsi Meet 开源会议 UI |
| 授权 | Apache 2.0 | Apache 2.0 |
选型建议:嵌入自有产品的实时通信 → LiveKit;快速部署开源视频会议系统 → Jitsi Meet。
LiveKit vs 商业 SaaS(Agora / Twilio / Daily.co)
| 维度 | LiveKit (开源/Cloud) | Agora | Twilio Video | Daily.co |
|---|---|---|---|---|
| 开源 | ✅ Apache 2.0 | ❌ | ❌ | 部分开源 |
| 自托管 | ✅ 完全支持 | ❌ | ❌ | 有限 |
| 定价 | 自托管免费 / Cloud 按量 | 按分钟计费 | 按分钟计费 | 按分钟计费 |
| 厂商锁定 | 无(代码即标准) | 高 | 高 | 中 |
| 全球节点 | Cloud 提供 / 自建 | 内置全球 CDN | 内置 | 内置 |
| AI Agents | ✅ 原生框架 | 需自行集成 | 需自行集成 | 部分支持 |
| SDK 质量 | 优秀且持续迭代 | 业界标杆 | 成熟 | 开发者友好 |
| 合规认证 | 自托管可控 / Cloud HIPAA | SOC2/HIPAA 等 | SOC2/HIPAA 等 | SOC2 |
选型建议:
- 数据主权 / 私有化部署 / 成本敏感 → LiveKit 自托管
- 不想运维、快速验证 → LiveKit Cloud 或 Daily.co
- 需要成熟 SLA + 全球合规 + 不计运维成本 → Agora / Twilio
- 已有 Twilio 生态 → Twilio Video
LiveKit vs Pion(纯 Go WebRTC 库)
| 维度 | LiveKit | Pion |
|---|---|---|
| 层级 | 完整 SFU 产品 | WebRTC 协议库 |
| 功能 | Room 管理、分布式、SDK、Agents | ICE/DTLS/SRTP 原语 |
| 适用 | 直接构建产品 | 构建自定义 WebRTC 方案 |
LiveKit 本身基于 Pion 构建。选 Pion 意味着从零搭建 SFU 逻辑;选 LiveKit 意味着站在 Pion 之上获得完整产品能力。
优缺点分析
✅ 优点
-
生态完整,开箱即用
- 不只是 SFU,还有 SDK、Agents、Egress、Ingress、CLI、Cloud
- 减少「选型 + 胶水代码」时间,适合中小团队快速交付
-
现代化架构
- Go 语言高性能 + 低内存占用
- 分布式 Mesh 默认启用,水平扩展路径清晰
- 支持 Simulcast、SVC(VP9/AV1)、Dynacast 等前沿特性
-
AI 原生能力
- Agents 框架让 AI 作为 Room 参与者是「一等公民」
- 在 AI 语音助手、实时翻译等场景有显著先发优势
-
真正的开源
- Apache 2.0 授权,可商用
- Cloud 与自托管代码一致,无厂商锁定
- 社区活跃(Slack、GitHub Discussions)
-
开发者体验优秀
- 文档完善(docs.livekit.io)
- TypeScript 优先,React 组件开箱即用
- CLI 工具链成熟,本地
--dev模式一键启动
-
部署灵活
- 单二进制 / Docker / K8s 多种方式
- 云无关(Cloud Agnostic),可跑在任何主流云平台
❌ 缺点
-
相对年轻
- 2021 年发布,比 Janus/Jitsi/mediasoup 历史短
- 部分边缘场景(如复杂 SIP 拓扑)不如 Janus 成熟
-
定制深度有限
- 相比 mediasoup 这种「库级」方案,底层媒体管线不易魔改
- 如果需求是高度非标准的 WebRTC 拓扑,可能受框架约束
-
自托管运维成本
- 生产环境需要 Redis、TURN、监控、多区域部署
- 超大规模时需要理解分布式 Mesh 的运维
-
SIP / 传统电信
- 自托管 SIP 能力不如 Janus 插件生态丰富
- 重度 PSTN 场景可能更依赖 LiveKit Cloud
-
React Native SDK 仍为 Beta
- 移动端跨平台方案尚未完全 GA
- Flutter / 原生 SDK 更成熟
-
社区规模 vs 商业巨头
- Agora/Twilio 的全球节点、合规认证、技术支持仍是企业级首选
- LiveKit 企业支持主要依赖 Cloud 订阅
典型应用场景
场景 1:嵌入式视频会议
需求:在 SaaS 产品内嵌入多人视频通话,而非跳转 Zoom。
方案:
- 后端用 Server SDK 生成 JWT Token
- 前端用
@livekit/components-react快速搭建 UI - 自托管或 LiveKit Cloud 部署
场景 2:AI 语音助手 / 实时对话
需求:用户通过语音与 AI 实时对话,支持打断。
方案:
- LiveKit Agents 框架
- 接入 OpenAI / Anthropic / 本地 LLM
- STT + LLM + TTS 管线由 Agents 编排
场景 3:直播 + 连麦互动
需求:主播推流,观众连麦,同时录制回放。
方案:
- Ingress 接收 OBS RTMP 推流
- Room 内观众通过 Client SDK 连麦
- Egress 录制合成视频或 RTMP 转推
场景 4:在线教育 / 虚拟课堂
需求:1 对多授课,学生举手发言,低延迟白板。
方案:
- SFU 选择性订阅:学生默认只订阅老师视频
- Data Channel 传输白板/信令
- Speaker Detection 自动切换焦点
场景 5:IoT 远程监控
需求:摄像头设备低延迟回传,多端同时观看。
方案:
- 设备端用 Rust/Go SDK 发布 Track
- 服务端 Dynacast 自适应码率
- 多区域部署降低延迟
快速上手示例
后端:生成 Token(Node.js)
import { AccessToken } from "livekit-server-sdk";
const token = new AccessToken("api-key", "api-secret", {
identity: "user-123",
});
token.addGrant({
roomJoin: true,
room: "my-room",
canPublish: true,
canSubscribe: true,
});
const jwt = await token.toJwt();
console.log(jwt);
前端:加入 Room(React)
import { LiveKitRoom, VideoConference } from "@livekit/components-react";
export default function App() {
return (
<LiveKitRoom
token={token}
serverUrl="wss://your-livekit-server"
connect={true}
>
<VideoConference />
</LiveKitRoom>
);
}
CLI:模拟测试参与者
lk room join \
--url ws://localhost:7880 \
--api-key devkey --api-secret secret \
--identity bot-user \
--publish-demo \
my-room
相关资源
官方地址
- LiveKit 官网: https://livekit.io
- GitHub 仓库: https://github.com/livekit/livekit
- 官方文档: https://docs.livekit.io
- LiveKit Cloud: https://cloud.livekit.io
示例项目
- LiveKit Meet: https://meet.livekit.io — 开源视频会议
- KITT (AI 语音助手): https://livekit.io/kitt
- Spatial Audio Demo: https://spatial-audio-demo.livekit.io
- OBS 直播示例: https://github.com/livekit-examples/livestream
生态仓库
- Agents: https://github.com/livekit/agents
- Egress: https://github.com/livekit/egress
- Ingress: https://github.com/livekit/ingress
- CLI: https://github.com/livekit/livekit-cli
社区
- Slack: https://livekit.io/join-slack
- Twitter/X: @livekit
总结与建议
推荐指数:⭐⭐⭐⭐⭐ (5/5)
LiveKit 适合谁?
- 需要在产品中嵌入实时音视频,而非调用 Zoom SDK 的 SaaS 团队
- 希望快速上线,不想从 mediasoup/Janus 底层搭起的技术团队
- AI 应用开发者:构建语音助手、实时翻译、AI 陪练等 Agent 场景
- 预算有限但需要生产级能力:自托管完全免费(Apache 2.0)
- 需要私有化部署:金融、医疗、政务等对数据主权有要求的行业
不太适合谁?
- 需要 高度定制 SFU 内部逻辑 的 WebRTC 专家团队(mediasoup 更合适)
- 重度 SIP/PSTN 集成 且不愿依赖 Cloud 的传统电信场景(Janus 更合适)
- 只需 开源会议 UI、不需要嵌入自有产品(Jitsi Meet 更省事)
- 完全不希望运维、且需要 企业级 SLA 的大客户(Agora/Twilio 更成熟)
一句话总结:LiveKit 是目前 「开源 WebRTC + 完整生态 + AI 原生」 方向上的最佳实践之一。如果你正在评估实时通信方案,且团队没有深厚的 WebRTC 自研能力,LiveKit 几乎应该是首选 POC 对象。