livekit/rust-sdks
LiveKit realtime and server SDKs for Rust
📹🦀 LiveKit Rust SDK – 用于 Rust 应用程序的实时视频、音频与数据
简介 – 一个原生的 Rust 客户端库,通过 WebRTC 与 LiveKit 服务器(云端或自建)进行通信。它让您能将低延迟视频通话、音频流和任意数据通道加入任何 Rust 程序中,从桌面工具到移动应用程序及嵌入式设备皆可使用。
主要功能
- 连接到 LiveKit 房间并发布/订阅音频、视频和数据轨道。
- 支持现代编解码器与功能:联播 (simulcast)、SVC (AV1/VP9)、硬件加速 H.264/H.265(macOS/iOS 上的 VideoToolbox、Nvidia GPU 上的 NVENC、Linux 上的 AMD、Jetson 支持)。
- Dynacast(仅在有订阅者时发送视频)以及可选的自适应流。
- 跨平台:Windows, macOS, Linux, iOS, Android。
- 基于 Tokio 构建以实现异步操作。
仓库中的 Crates
| Crate | 用途 |
|---|---|
livekit-api |
服务器端 REST API 与 JWT 令牌生成。 |
livekit |
主要的实时客户端 SDK(WebRTC 处理、轨道管理、事件)。 |
livekit-ffi |
用于生成语言绑定的内部辅助工具(例如用于其他 SDK)。 |
livekit-protocol |
客户端与服务器使用的自动生成协议定义。 |
典型工作流程
- 生成访问令牌 (JWT):使用
livekit_api::access_token并搭配您的 LiveKit API 密钥/密钥。 - 创建或加入房间:通过 Room Service API 或直接使用
Room::connect。 - 发布轨道:将麦克风、摄像头或文件源附加到房间。
- 订阅远程轨道:通过
NativeAudioStream/NativeVideoStream接收音频/视频帧并进行异步处理。 - 使用数据通道:用于聊天、信号传输或自定义二进制负载。
示例代码片段
// 1️⃣ 创建 JWT 令牌
let token = livekit_api::access_token::AccessToken::with_api_key(&api_key, &api_secret)
.with_identity("rust-bot")
.with_grants(livekit_api::access_token::VideoGrants { room_join: true, room: "my-room".into(), ..Default::default() })
.to_jwt()?;
// 2️⃣ 连接到房间
let (room, mut events) = livekit::Room::connect(&url, &token).await?;
while let Some(ev) = events.recv().await {
match ev {
livekit::RoomEvent::TrackSubscribed { track, .. } => {
// 在此处理音频/视频帧
}
_ => {}
}
}
对 AI / 代理的重要性 – README 强调了 LiveKit Agents 生态系统(Python/Node),它整合了语音转文字、大型语言模型、文字转语音、轮流检测等功能。Rust SDK 可作为以 Rust 编写的语音 AI 代理的传输层,将音频输入 STT 模型或通过 TTS 接收生成的语音,全程实时处理。
入门指南
- 将
livekit = "<latest>"(或您需要的特定 crate)加入您的Cargo.toml。 - 确保已设置
.cargo/config.toml中所需的rustflags(链接原生 WebRTC 库所需)。 - 安装平台特定的构建工具(例如 Ubuntu 上的 clang-21,macOS 上的 -ObjC 链接器标志),详见 Building 章节。
- 运行其中一个示例项目(
examples/basic_room,examples/play_from_disk等)以查看实际运行的视频通话。
生态系统链接
- LiveKit server (开源 WebRTC 信号与媒体服务器)。
- 其他客户端 SDK (JS, Swift, Android, Flutter, Unity, C++, Python, Node)。
- 用于构建语音助手的 Agent SDK。
- 文档、CLI 与社区资源。
总结 – 如果您需要在 Rust 应用程序中实现实时、低延迟的媒体传输——无论是为了视频会议、直播,还是驱动 AI 语音代理——LiveKit Rust SDK 提供了基于 WebRTC 和 Tokio 的生产级跨平台基础。
相关
- 项目
- 项目
- 项目
- 项目
- 项目