livekit/rust-sdks

LiveKit realtime and server SDKs for Rust

📹🦀 LiveKit Rust SDK – Rust 앱을 위한 실시간 비디오, 오디오 및 데이터

개요 – WebRTC를 사용하여 LiveKit 서버(클라우드 또는 자체 호스팅)와 통신하는 네이티브 Rust 클라이언트 라이브러리입니다. 데스크톱 도구부터 모바일 앱, 임베디드 장치까지 모든 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를 기반으로 구축.

저장소 내 크레이트

크레이트 목적
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를 기반으로 한 프로덕션급 크로스 플랫폼 기반을 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트