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 客户端与服务器使用的自动生成协议定义。

典型工作流程

  1. 生成访问令牌 (JWT):使用 livekit_api::access_token 并搭配您的 LiveKit API 密钥/密钥。
  2. 创建或加入房间:通过 Room Service API 或直接使用 Room::connect。
  3. 发布轨道:将麦克风、摄像头或文件源附加到房间。
  4. 订阅远程轨道:通过 NativeAudioStream / NativeVideoStream 接收音频/视频帧并进行异步处理。
  5. 使用数据通道:用于聊天、信号传输或自定义二进制负载。

示例代码片段

// 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 的生产级跨平台基础。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目