Gunakan SDK ini untuk menambahkan fitur video, audio, dan data waktu nyata ke aplikasi Rust Anda. Dengan terhubung ke LiveKit Cloud atau server yang dihosting sendiri, Anda dapat dengan cepat membangun aplikasi seperti AI multimodal, streaming langsung, atau panggilan video hanya dengan beberapa baris kode.
Menerima trek
Penerbitan trek
Saluran data
Siaran simultan
Kodek SVC (AV1/VP9)
Streaming Adaptif
Dynacast
Video perangkat keras ens/des
Kotak Alat Video untuk MacOS/iOS
Platform yang Didukung
jendela
macOS
Linux
iOS
Android
livekit-api
: API Server dan pembuatan token autentikasi
livekit
: SDK waktu nyata LiveKit
livekit-ffi
: Peti internal, digunakan untuk membuat binding untuk bahasa lain
livekit-protocol
: Kode yang dihasilkan protokol LiveKit
Saat menambahkan SDK sebagai ketergantungan pada proyek Anda, pastikan untuk menambahkan rustflags
yang diperlukan ke konfigurasi kargo Anda, jika tidak, penautan mungkin gagal.
Silakan lihat juga daftar perangkat platform yang didukung.
Saat ini, Tokio diharuskan menggunakan SDK ini, namun kami berencana membuat runtime eksekutor asinkron menjadi agnostik.
gunakan livekit_api::access_token;gunakan std::env;fn create_token() -> Hasil{biarkan api_key = env::var("LIVEKIT_API_KEY").expect("LIVEKIT_API_KEY tidak disetel") ;biarkan api_rahasia = env::var("LIVEKIT_API_SECRET").expect("LIVEKIT_API_SECRET tidak disetel");let token = access_token::AccessToken::with_api_key(&api_key, &api_secret).with_identity("rust-bot").with_name("Rust Bot ").with_grants(access_token::VideoGrants { room_join: benar, ruangan: "kamarku".to_string(), ..Default::default()}).to_jwt();return token}
gunakan livekit_api::services::room::{CreateRoomOptions, RoomClient};#[tokio::main]async fn main() {biarkan room_service = RoomClient::new("http://localhost:7880").unwrap( );biarkan ruangan = room_service.create_room("kamar_saya", CreateRoomOptions::default()).await.unwrap();println!("Ruang yang dibuat: {:?}", ruangan);}
gunakan livekit::prelude::*;#[tokio::main]async fn main() -> Hasil<()> {let (room, mut room_events) = Room::connect(&url, &token).await?; while let Some(event) = room_events.recv().await {match event {RoomEvent::TrackSubscribed { track, publikasi, peserta } => {// ...}_ => {}}}Oke(())}
...gunakan masa depan::StreamExt; // ciri ini diperlukan untuk melakukan iterasi pada bingkai audio & video, gunakan livekit::prelude::*;match event {RoomEvent::TrackSubscribed { track, publikasi, peserta } => {match track {RemoteTrack::Audio(audio_track) => {biarkan rtc_track = audio_track.rtc_track();biarkan mut audio_stream = NativeAudioStream::new(rtc_track);tokio::spawn(async move {// Terima bingkai audio dalam tugas barusementara let Some(audio_frame) = audio_stream.next().await {log::info!("menerima bingkai audio - {audio_frame:#?}");}});},RemoteTrack::Video(video_track) => {biarkan rtc_track = video_track.rtc_track();let mut video_stream = NativeVideoStream::new(rtc_track);tokio::spawn(async move {// Terima bingkai video dalam tugas barusementara let Some(video_frame) = video_stream.next().await { log::info!("bingkai video yang diterima - {video_frame:#?}");}});},}},_ => {}}
ruangan dasar: contoh sederhana yang menghubungkan ke sebuah ruangan.
wgpu_room: contoh aplikasi lengkap dengan rendering video menggunakan wgpu dan egui.
seluler: aplikasi seluler yang menargetkan iOS dan Android
play_from_disk: mempublikasikan audio dari file wav
save_to_disk: menyimpan audio yang diterima ke file wav
LiveKit bertujuan untuk menyediakan tumpukan WebRTC open source dan end-to-end yang berfungsi di mana saja. Kami memiliki dua tujuan dengan SDK ini:
Bangun SDK klien LiveKit lintas platform mandiri untuk Rustaceans.
Membangun inti umum untuk SDK khusus platform lainnya (misalnya Unity, Unreal, iOS, Android)
Mengenai (2), kami telah mengembangkan sejumlah SDK klien untuk beberapa platform dan menghadapi beberapa tantangan dalam prosesnya:
Ada sejumlah besar logika bisnis/kontrol dalam protokol pensinyalan dan WebRTC kami. Saat ini, logika ini perlu diterapkan di setiap platform baru yang kami dukung.
Interaksi dengan perangkat media dan pengkodean/dekode bersifat spesifik untuk setiap platform dan kerangka kerja.
Untuk kerangka kerja multi-platform (misalnya Unity, Flutter, React Native), tugas-tugas di atas terbukti sangat menyusahkan.
Oleh karena itu, kami mengajukan Rust SDK, sesuatu yang tetap ingin kami bangun, yang merangkum semua logika bisnis dan API khusus platform kami ke dalam kumpulan abstraksi yang bersih, juga dapat berfungsi sebagai fondasi untuk SDK kami yang lain!
Kami pertama-tama akan menggunakannya sebagai dasar untuk Unity SDK kami (sedang dikembangkan), namun seiring berjalannya waktu, ini juga akan mendukung SDK kami yang lain.
Ekosistem LiveKit | |
---|---|
SDK waktu nyata | Komponen React · Browser · Komponen Swift · iOS/macOS/visionOS · Android · Flutter · React Native · Rust · Node.js · Python · Unity (web) · Unity (beta) |
API Server | Node.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (komunitas) |
Kerangka Agen | Python · Taman bermain |
Layanan | Server LiveKit · Jalan Keluar · Masuk · SIP |
Sumber daya | Dokumen · Contoh aplikasi · Cloud · Hosting mandiri · CLI |