10分钟上手LiveKit:零基础也能跑起来的实时音视频会议后端
【免费下载链接】livekitEnd-to-end realtime stack for connecting humans and AI项目地址: https://gitcode.com/GitHub_Trending/li/livekit
给产品加视频通话,媒体链路谁来扛
你想给产品加视频会议功能,最头疼的往往不是界面,而是媒体链路。谁收音视频流、谁转发、谁管房间里几十号人?LiveKit 把这套问题压进一个服务器进程:一套开源的实时音视频会议系统,客户端直接连上它,转发和管理都交给它。看完这一篇,你手上会多一个能进人的会议环境。
LiveKit 替你扛下了什么
LiveKit 是一个可以自托管的 WebRTC(浏览器实时音视频传输的标准协议)服务,核心是 SFU(Selective Forwarding Unit,只转发、不混流的服务器)。客户端不互相直传流,全都连到服务器,由它把流分发给需要的人,这样加人不增加每人的带宽负担。
| 你的情况 | 是否合适 |
|---|---|
| 给自家产品内嵌音视频通话 | 合适,一台服务器加官方 SDK 就够 |
| 不想自己写协商、重传、转发 | 合适,SFU 全包了 |
| 大型会议、多节点扩容 | 合适,配 Redis 即可组集群 |
| 只要录制回放、不要实时会 | 不合适,找专用录制服务 |
服务入口在cmd/server/,进房间、离会、发流这类房间管理逻辑集中在pkg/service/roommanager.go,想查行为先看这两处。
四步走到第一次连通
准备:装服务器二进制。Linux 用官方脚本,macOS 走 Homebrew:
curl -sSL https://get.livekit.io | bash # Linux brew install livekit # macOS做完后,livekit-server命令出现在你的 PATH 里。
启动:进开发模式,用内置占位凭据监听 7880 端口:
livekit-server --dev终端会打印API Key: devkey和API Secret: secret,这对就是当前凭据。
连接:给某个用户签发访问令牌。令牌是 JWT(带签名的声明文档,相当于一张身份证),里面写死了这个人的身份和可加入的房间:
lk token create \ --api-key devkey --api-secret secret \ --join --room my-first-room --identity user1 \ --valid-for 24hlk是随 LiveKit CLI 一起安装的命令行工具,生成的令牌粘给任意客户端即可入会。
验证:手上没客户端?用 CLI 模拟一个测试发布者,往房间里灌一段演示视频:
lk room join --url ws://localhost:7880 \ --api-key devkey --api-secret secret \ --identity bot-user1 --publish-demo \ my-first-room房间里有另一个参会者时,他能看到这段演示流——整条链路就通了。
背后替你做的三件事
自适应码率:服务器不会把同一质量的分发给所有人。某端网络差,就自动给他降分辨率、降码率的流,保证房间里人人看得动,不用你写调度逻辑。
令牌鉴权:每次入会都要过pkg/service/auth.go的校验。身份、房间、权限全写在 JWT 里,没过鉴权的请求进不了房间,等于你不用自己造权限系统。
可观测性内置:服务自带 Prometheus 指标,仓库里附了现成的 Grafana 仪表盘deploy/grafana/livekit-server-overview.json,导入即可看到房间、参会人数、流量的实时状态。
生产怎么配,还能接什么
上生产先做一件事:退出开发模式。改用正式配置文件,换上自己的密钥对(secret 至少 32 字符),放行 7880/7881 端口和 UDP 50000-60000 区段。配置项全貌看示例文件config-sample.yaml,虚拟机、Kubernetes 等部署方式见deploy/README.md。
要扩多节点,只需在配置里填上 Redis 地址,集群会自动同步房间,客户端连哪个节点都能落到同一个房间。
再往后是扩展题:接 Egress 服务做录制,走 RTMP/HLS 推给直播平台,或者把 AI 助手拉进会议当 agent。第一篇跑通之后,这些都是一份配置的功夫。
【免费下载链接】livekitEnd-to-end realtime stack for connecting humans and AI项目地址: https://gitcode.com/GitHub_Trending/li/livekit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考