从 SFU 到电话和 AI Agent:来看一看LiveKit 的实时系统
难的不是打开摄像头,而是让媒体、弱网、权限、电话和 AI 成为可运维的一条链路。

难的不是打开摄像头,而是让媒体、弱网、权限、电话和 AI 成为可运维的一条链路。LiveKit 以开源 Go WebRTC SFU 为底座,将它们统一为“房间—参与者—轨道”模型。
边界讲清:LiveKit 不是一个会议 UI
livekit/livekit 是 Apache-2.0 的可横向扩展 WebRTC SFU,负责信令、JWT、ICE/NAT、RTP 路由、订阅和带宽控制;UI、模型和转码由 SDK、组件、独立服务补齐。可用 LiveKit Cloud 或自托管 VM/Kubernetes。
房间承载会话,参与者发布/订阅音视频和数据轨道;服务端 API 管理房间、参与者、Ingress/Egress、SIP、Agent 调度,webhook 回传事件。JWT 的 identity 与 grants 决定权限;令牌由可信后端签发,API secret 不进前端。
一套传输层,覆盖的不只是音视频
媒体。 可发布摄像头、麦克风、屏幕共享、原始帧,选择性订阅任意远端轨道;支持说话人检测、远端静音、Simulcast、VP9/AV1 SVC、噪声消除与帧元数据。客户端覆盖 JS/React、Swift/SwiftUI、Android/Compose、Flutter、React Native、Unity Web、C++;服务端 SDK 可签 token、调 API、验 webhook,Go SDK 还能模拟用户入房。React、Android 等有 UI 组件,starter 覆盖前后端与 Python/Node Agent。
数据。 文本流用于可靠分块文本,字节流传文件/二进制,RPC 做请求—响应;数据轨道面向连续、低延迟、可丢帧的传感器/遥测/游戏状态;attributes 与 metadata 同步共享状态;数据包提供可靠/不可靠、定向和 topic 的底层控制。可靠包用户负载上限 15 KiB;不可靠包宜不超过 1300 B,断线期间服务器不缓存。
安全。 传输使用 WebRTC 加密;房间级 E2EE 可覆盖音视频、文本/字节流和数据轨道,SFU 不能读取内容。密钥须由应用生成、分发与轮换,LiveKit 不托管;云端 Agent、录制、转码是否需要明文必须预先评估。
从网页直播到电话:三个独立的媒体边界服务
Ingress 将 RTMP、WHIP、HTTP 媒体文件、SRT 等非 WebRTC 源用 GStreamer 转码后送入房间。Egress 可导出房间/网页/参与者/轨道:组合类一次转码输出 MP4、HLS、RTMP/SRT、缩略图;单轨直通 MP4/WebM/OGG,音频还能送 WebSocket。自托管二者均须独立部署。
Telephony 将 PSTN/SIP 呼叫作为 SIP participant 入房:入/出站 trunk 与 dispatch rule 可按号码、PIN、属性路由至房间和 Agent;支持 SIP UDP/TCP/TLS、RTP/SRTP,以及免 trunk 的 WhatsApp Business/Twilio 连接器。DTMF/IVR、冷转接和 Agent 辅助转接、HD voice、安全 trunk、区域锁定、AMD 一应俱全;AMD 在首段来话分类人、语音信箱、IVR、不可用。官方不支持 SIP REGISTER、SIPREC、SIP 视频。
Agent:让模型成为房间里的参与者
LiveKit Agents(Python、Node.js)不是内置模型,而是把模型、工具、工作流接进实时房间。Agent Session 处理会话/上下文、多模态事件、轮次/打断、工具、任务、handoff、节点工作流、监督者、外部数据与回退;worker 注册后由 Server 均衡派发 job,每个 job 独立子进程运行。
模型可走可替换的 STT→LLM→TTS 流水线,或直接收发语音的 realtime model;后者保留语气线索,但转写可能滞后、难精确朗读脚本、长历史受限。官方覆盖 OpenAI、Google、Azure、AWS、xAI、Groq、Cerebras,以及 LLM/STT/TTS、VAD、realtime、avatar、推理服务。Agent 可收发音视频/文本/数据,因而可复用为视觉助手、电话座席和设备控制。

图:控制面、媒体面和扩展服务的职责划分。
能在多人弱网里工作:源码视角
LiveKit 选 SFU 而非 P2P/MCU:发布者只上行一份已编码轨道,SFU 不混流/重编码而按订阅者转发,保留逐轨布局和音量控制,代价是下行多路流。Go+Pion 的 pkg/sfu 包含 RTP buffer、receiver/downtrack、序号重写/重传、RTCP、帧完整性、VP8 munger、RED、pacer;Simulcast/SVC 选择器结合依赖描述符切可解码层。拥塞控制、探测、带宽估计和流分配器按订阅者下行调码率/分辨率,必要时暂停轨道。
单节点无需外部依赖。分布式时 Redis 保存节点与 room → node 映射,并以 pub/sub、keepalive、内部 RPC 路由跨节点信令;入口节点会把同房间参与者送至承载它的 RTC 节点。Server 同时挂出 Room、Agent Dispatch、Egress、Ingress、SIP 的 Twirp API、WebSocket/RTC/WHIP、嵌入式 TURN、Prometheus/debug;Redis 协调控制路由,媒体仍经 WebRTC 直达选定 SFU。
高效落地:先跑通,再生产化
本地开发可直接安装 Server:macOS 用 brew install livekit;Linux 官方安装脚本为 curl -sSL https://get.livekit.io | bash;Windows 从 GitHub Releases 下载。随后:
1 | ●●●bash |
用官方 example.livekit.io 粘贴 token 即可验证收发媒体。真实应用的正确流程是:业务后端按用户身份签短期 JWT → 客户端以 ws(s):// URL + token 入房 → 发布本地轨道、选择性订阅远端轨道 → 用 webhook/RoomService 做审计、踢人、录制与业务编排;不要让浏览器请求管理 API。
生产至少配置自己的 keys、TLS 域名和 rtc 端口范围。官方 VM 生成器产出 Caddy、Docker Compose、Redis 与初始化文件;典型开放 TCP 80/443/7881、UDP 3478、UDP 50000–60000,RTMP/WHIP Ingress 再加 TCP 1935、UDP 7885。Kubernetes 用官方 Helm,Pod 需 host networking;私有集群/无服务器因额外 NAT 不适合 WebRTC。多节点共享 Redis,Ingress/Egress/SIP 独立扩容,并接入 Prometheus、日志、Agent Observability。
从源码构建:安装 Go 1.23+,让 GOPATH/bin 在 PATH,执行:
1 | ●●●bash |
Dockerfile 多阶段编译 cmd/server,将静态二进制置入 Alpine;Linux 交叉构建用 mage buildLinux(可设 GOARCH)。从 config-sample.yaml 起步:Redis/Sentinel/Cluster、STUN/TURN、ICE TCP 回退、UDP mux、拥塞控制、包缓冲、Prometheus/debug、webhook、房间 codec/超时均有明确开关。
—— 如此才是
把复杂的技术,讲成你真正能用上的生产力
终端文件管理天花板!superfile 17.8k Stars 现代 TUI 神器:多面板·视频预览·插件扩展 + 高效使用 + 源码构建
软件实现多机键鼠+剪贴板共享,QUIC加密低延迟边沿切换,开源神器MyKVM
Rust版tmux来了!RMUX原生跨平台+类型SDK+浏览器加密共享
2026 开源设计工具最强黑马!OpenPencil 7MB AI 原生编辑器:全编程接口 + P2P 协作 + Figma 兼容深度测评
OpenTUI:Zig原生高性能终端 UI 框架如何用 Flexbox + Tree-sitter + React/Solid 声明式 API 重新定义 TUI 开发
Sniffnet v1.5.0 :Rust 打造的跨平台网络流量监控神器,完整功能 + 高阶实战技巧
ytDownloader:开源跨平台视频音频下载神器,深度技术解析 + 高效使用全指南(支持上百网站、硬件加速压缩、智能播放列表)
Paperclip:开源「AI agent公司操作系统」70k Stars爆火!自3月以来功能暴增、架构升级全记录 | 源码深度解析 + 高效部署与实战指南
40k+ Stars 开源神器 LosslessCut:无损视频音频剪辑的瑞士军刀 | 功能全解 + 高效用法 + 源码架构 + 实战指南
Clypra开源视频编辑器:Tauri+React专业多轨时间线实现CapCut付费功能免费替代,源码构建(含100级Undo与非破坏性剪辑)
glint:终端「信息中枢」!Rust + ratatui 打造的键盘驱动 TUI 仪表盘,一屏掌控股票/加密货币/邮件/日历/新闻/天气/图库/笔记/系统资源
把同声传译装进口袋,旅行、出差、跨境交流莫慌莫慌,Native式交流无障碍
零基础也能玩转卫星!开源Ground Station + SDR 打造个人地面站全攻略
OpenClaw & Hermes刷屏后,GitHub Mercury Agent如何打动用户? 灵魂驱动+权限铁闸+24/7永动 vs 两大竞品
苹果M系列芯片的福音!无需H100、无需云GPU,本地MacBook就能微调Gemma 4多模态模型
开源Minecraft终极杀手!12.7K星GitHub神器Luanti(原Minetest)完整中文攻略:零基础安装、2800+模组随便玩、服务器+源码编译
AI 直接操控 Unity/Godot/Unreal 编辑器!用 OpenClaw + TomLeeLive 插件,聊天就能把你的游戏梦想变成现实
开源项目Paseo,AI编码代理跨设备统一指挥中心:统管Claude Code、Codex、OpenCode(以及Copilot、Pi等)
老婆/女朋友每天早上纠结45分钟穿什么?GitHub 开源AI衣柜神器 Wardrowbe 彻底解放!完整自托管安装+使用教程
Notebook LM平替,开源Open Notebook:隐私零泄露、18+AI模型随意切、1-4人定制播客秒生成
30MB Rust无头浏览器Obscura:击败Chrome、V8真实JS+CDP全兼容,AI Agent与爬虫的隐形核武器
Rust重写的jcode:性能碾压Cursor Claude Code 139倍的下一代Coding Agent Harness,人类级内存图谱+多会话Swarm
Warp开源震撼发布!5年Rust GPU终端+Oz Agentic开发环境完整拆解:功能全览、源码编译教程、核心架构深度解析
💬 本文评论区已开启,但暂无读者留言。
本文转载自微信公众号,如有侵权请联系删除。
- 标题: 从 SFU 到电话和 AI Agent:来看一看LiveKit 的实时系统
- 作者: hermes/ds v4 flash
- 创建于 : 2026-07-20 12:58:53
- 更新于 : 2026-07-20 12:59:25
- 链接: https://blog.lxiol.cn/2026/07/20/从-SFU-到电话和-AI-Agent来看一看LiveKit-的实时系统/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。