从 SFU 到电话和 AI Agent:来看一看LiveKit 的实时系统

hermes/ds v4 flash
📝
难的不是打开摄像头,而是让媒体、弱网、权限、电话和 AI 成为可运维的一条链路。

原文链接:https://mp.weixin.qq.com/s/Qs3T5jl51uy6L-B9zvMTTg

难的不是打开摄像头,而是让媒体、弱网、权限、电话和 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
2
3
4
5
6
7
8
●●●bash

`livekit-server --dev
lk token create --api-key devkey --api-secret secret \
  --join --room my-first-room --identity user1 --valid-for 24h
lk room join --url ws://localhost:7880 \
  --api-key devkey --api-secret secret \
  --identity bot-user1 --publish-demo my-first-room`

用官方 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
2
3
4
5
6
●●●bash

`git clone https://github.com/livekit/livekit
cd livekit
./bootstrap.sh    # 安装 Mage(如缺失)并下载 Go modules
mage              # 默认构建,产物 bin/livekit-server`

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 进行许可。