综合介绍
LiveKit 是一个开源项目,专注于帮助开发者构建实时音视频应用。它基于 WebRTC 技术,提供了一套完整的解决方案,包括媒体服务器和各种客户端 SDK。LiveKit 的核心是一个可扩展的 SFU(选择性转发单元)服务器,用 Go 语言编写,结合了 Pion WebRTC 实现。它的设计简单直接,支持从小型应用到大规模会议的多种场景。开发者可以用它快速搭建视频会议、互动直播或语音助手等功能。LiveKit 提供云托管和自托管两种选择,灵活性很高。官方文档和社区支持也让上手变得更容易。
功能列表
- 实时音视频通信:支持多人同时进行低延迟的音视频通话。
- SFU 媒体服务器:通过选择性转发技术优化带宽,提升大规模应用的性能。
- 多平台 SDK:提供 JavaScript、iOS、Android 等客户端 SDK,方便跨平台开发。
- 服务器端支持:包含生成访问令牌、调用 API 和接收 webhook 的工具。
- 数据通道:支持实时传输文本或自定义数据,适合互动应用。
- 云服务与自托管:可选 LiveKit Cloud 或自己部署服务器。
- AI 集成:支持与语音和视频 AI 模型结合,适合智能助手开发。
使用帮助
LiveKit 的使用分为两种方式:一是直接使用 LiveKit Cloud,二是自己部署服务器。以下是详细操作步骤。
安装与部署
如果选择自托管,需要先安装 LiveKit 服务器。以下是基本步骤:
- 准备环境:确保你的系统支持 Docker,可以运行 Linux 或 macOS。
- 安装 LiveKit CLI:这是命令行工具,帮助你管理服务器和测试功能。运行以下命令:
curl -sSL https://get.livekit.io | bash
安装完成后,输入 livekit-cli --version
检查是否成功。
3. 启动服务器:在终端运行以下命令,启动开发模式的 LiveKit 服务器:
livekit-server --dev
这会启动一个本地服务器,默认监听在 7880
端口。
4. 生成访问令牌:服务器需要令牌验证。用 CLI 生成:
livekit-cli create-token --api-key devkey --api-secret secret --identity user1 --room my-room
输出会包含一个 JWT 令牌,用于连接房间。
如果用 LiveKit Cloud,直接在 cloud.livekit.io 注册账号,创建项目后获取 API 密钥和密钥对,无需自己部署。
连接房间
连接房间是 LiveKit 的核心操作。以下以 JavaScript SDK 为例:
- 安装 SDK:在项目中运行:
npm install @livekit/client
- 加入房间:用以下代码连接:
import { Room, connect } from '@livekit/client';
const room = new Room();
const token = '你的令牌'; // 从 CLI 或云服务获取
await connect(room, token, { url: 'ws://localhost:7880' });
console.log('已连接到房间');
- 发布音视频:连接后,发布本地摄像头和麦克风:
const localParticipant = room.localParticipant; await localParticipant.enableCameraAndMicrophone(); console.log('开始发布音视频');
特色功能操作
- 实时数据传输:除了音视频,LiveKit 支持数据通道。发送消息的代码如下:
localParticipant.publishData('Hello, everyone!', 'text');
接收端监听:
room.on('dataReceived', (payload, participant) => { console.log(`收到消息:${payload},来自 ${participant.identity}`); });
- AI 集成:LiveKit 支持与 AI 模型对接。比如用 Python SDK 实现语音转文字:
from livekit import Room room = Room() await room.connect('ws://localhost:7880', token) # 监听音频并处理
结合语音识别 API(如 Google STT)即可实现实时转录。
- 大规模直播:用 LiveKit Ingress 从 OBS 推流:
- 在云控制台创建 Ingress,获取 RTMP URL 和流密钥。
- 在 OBS 设置中填入 URL 和密钥,开始推流。
- 观众通过 WebRTC 低延迟观看。
操作流程
- 确定需求:是小型通话还是大型直播?
- 选择部署方式:云服务省心,自托管更灵活。
- 配置环境:安装工具,获取密钥。
- 开发应用:用 SDK 连接房间,添加功能。
- 测试运行:用 CLI 模拟流量,检查效果。
LiveKit 的文档在 docs.livekit.io 有详细说明,遇到问题可以加入 Slack 社区求助。
应用场景
- 视频会议
公司团队用 LiveKit 搭建内部会议系统,支持多人实时讨论。 - 互动直播
主播通过 OBS 推流,观众可以用 WebRTC 实时互动,延迟不到 100 毫秒。 - AI 语音助手
开发者结合 AI 模型,打造能听能说的智能客服。 - 远程教育
老师和学生通过 LiveKit 进行在线课堂,支持屏幕共享和实时问答。
QA
- LiveKit 支持多少人同时在线?
它能支持从几人到数千人的并发,具体取决于服务器配置和带宽。 - 自托管需要什么硬件?
一台 4 核 8GB 内存的服务器就能跑小型应用,大规模需要更高配置。 - LiveKit Cloud 免费吗?
提供免费额度,超出后按流量收费,具体见 livekit.io/pricing。