livekit/rust-sdks

LiveKit realtime and server SDKs for Rust

📹🦀 LiveKit Rust SDK – Rustアプリ向けのリアルタイムビデオ・オーディオ・データ

概要 – WebRTCを使用してLiveKitサーバー(クラウドまたはセルフホスト)と通信するネイティブRustクライアントライブラリです。デスクトップツールからモバイルアプリ、組み込みデバイスまで、あらゆるRustプログラムに低遅延のビデオ通話、オーディオストリーム、任意のデータチャネルを追加できます。

主な機能

  • LiveKitルームへの接続と、オーディオ・ビデオ・データトラックのパブリッシュ/サブスクライブ。
  • 最新のコーデックと機能のサポート:サイマルキャスト、SVC (AV1/VP9)、ハードウェアアクセラレーションによるH.264/H.265(macOS/iOSのVideoToolbox、Nvidia GPUのNVENC、LinuxのAMD、Jetsonサポート)。
  • Dynacast(サブスクライバーがいる場合のみビデオを送信)およびオプションのアダプティブストリーミング。
  • クロスプラットフォーム:Windows, macOS, Linux, iOS, Android。
  • 非同期操作のためにTokioをベースに構築。

リポジトリ内のクレート

クレート 用途
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経由で生成された音声の受信をリアルタイムで行うことができます。

はじめ方

  • Cargo.toml に livekit = "<latest>"(または必要な特定のクレート)を追加します。
  • .cargo/config.toml に必要な rustflags が設定されていることを確認します(ネイティブWebRTCライブラリのリンクに必要)。
  • Building セクションの説明に従い、プラットフォーム固有のビルドツール(Ubuntuのclang-21、macOSの -ObjC リンカーフラグなど)をインストールします。
  • サンプルプロジェクト(examples/basic_room, examples/play_from_disk など)を実行して、実際のビデオ通話を確認します。

エコシステムリンク

  • LiveKit server (オープンソースのWebRTCシグナリングおよびメディアサーバー)。
  • その他のクライアントSDK (JS, Swift, Android, Flutter, Unity, C++, Python, Node)。
  • 音声アシスタント構築用のAgent SDK。
  • ドキュメント、CLI、コミュニティリソース。

まとめ – ビデオ会議、ライブストリーミング、AI音声エージェントの駆動など、Rustアプリケーションでリアルタイムかつ低遅延のメディアが必要な場合、LiveKit Rust SDKはWebRTCとTokioを基盤としたプロダクションレベルのクロスプラットフォームな基盤を提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト