استخدم SDK هذا لإضافة ميزات الفيديو والصوت والبيانات في الوقت الفعلي إلى تطبيق Rust الخاص بك. من خلال الاتصال بـ LiveKit Cloud أو خادم مستضاف ذاتيًا، يمكنك إنشاء تطبيقات بسرعة مثل الذكاء الاصطناعي متعدد الوسائط أو البث المباشر أو مكالمات الفيديو باستخدام بضعة أسطر فقط من التعليمات البرمجية.
تلقي المسارات
نشر المسارات
قنوات البيانات
البث المتزامن
برامج الترميز SVC (AV1/VP9)
الجري التكيفي
ديناكاست
فيديو الأجهزة enc/dec
VideoToolbox لنظام التشغيل MacOS/iOS
المنصات المدعومة
ويندوز
ماك
لينكس
دائرة الرقابة الداخلية
أندرويد
livekit-api
: واجهات برمجة تطبيقات الخادم وإنشاء رمز المصادقة
livekit
: LiveKit SDK في الوقت الحقيقي
livekit-ffi
: صندوق داخلي، يستخدم لإنشاء روابط للغات الأخرى
livekit-protocol
: رمز تم إنشاؤه بواسطة بروتوكول LiveKit
عند إضافة SDK باعتبارها تبعية لمشروعك، تأكد من إضافة rustflags
الضرورية إلى تكوين الشحن الخاص بك، وإلا فقد يفشل الارتباط.
يرجى أيضًا الرجوع إلى قائمة مجموعات أدوات النظام الأساسي المدعومة.
في الوقت الحالي، يُطلب من Tokio استخدام SDK هذا، ومع ذلك فإننا نخطط لجعل وقت تشغيل المنفذ غير المتزامن غير محدد.
استخدم Livekit_api::access_token;use std::env;fn create_token() -> Result{let api_key = env::var("LIVEKIT_API_KEY").expect("LIVEKIT_API_KEY لم يتم تعيينه") ;let api_secret = env::var("LIVEKIT_API_SECRET").expect("لم يتم تعيين LIVEKIT_API_SECRET");let token = Access_token::AccessToken::with_api_key(&api_key, &api_secret).with_identity("rust-bot").with_name ("روبوت الصدأ").with_grants(access_token::VideoGrants {room_join: true، الغرفة: "my-room".to_string(), ..Default::default()}).to_jwt();return token}
استخدم Livekit_api::services::room::{CreateRoomOptions, RoomClient};#[tokio::main]async fn main() {letroom_service = RoomClient::new("http://localhost:7880").unwrap( );letroom =room_service.create_room("my_room", CreateRoomOptions::default()).await.unwrap();println!("تم إنشاء الغرفة: {:?}"، غرفة)؛}
استخدم Livekit::prelude::*;#[tokio::main]async fn main() -> Result<()> {let (room, mutroom_events) = Room::connect(&url, &token).await?; بينما Let Some(event) =room_events.recv().await {match events {RoomEvent::TrackSubscribed { المسار، النشر، المشارك } => {// ...}_ => {}}}Ok(()) }
...استخدام العقود الآجلة::StreamExt; // هذه السمة مطلوبة للتكرار على إطارات الصوت والفيديو استخدم Livekit::prelude::*;match events {RoomEvent::TrackSubscribed { المسار, المنشور, المشارك } => {match Track {RemoteTrack::Audio(audio_track) => {let rtc_track = audio_track.rtc_track();let mut audio_stream = NativeAudioStream::new(rtc_track);tokio::spawn(async move {// استقبل إطارات الصوت في مهمة جديدة بينما اترك Some(audio_frame) = audio_stream.next( ).await {log::info!("تم استلام إطار صوتي - {audio_frame:#?}");}});},RemoteTrack::Video(video_track) => {let rtc_track = video_track.rtc_track();let mut video_stream = NativeVideoStream::new(rtc_track);tokio::spawn(async move {// احصل على إطارات الفيديو في مهمة جديدة بينما تسمح Some(video_frame) = video_stream.next().await {log::info!(" إطار الفيديو المستلم - {video_frame:#?}");}});},}},_ => {}}
الغرفة الأساسية: مثال بسيط متصل بغرفة.
wgpu_room: مثال كامل للتطبيق مع عرض الفيديو باستخدام wgpu وegui.
الهاتف المحمول: تطبيق جوال يستهدف iOS وAndroid
play_from_disk: نشر الصوت من ملف wav
save_to_disk: حفظ الصوت المستلم في ملف wav
يهدف LiveKit إلى توفير حزمة WebRTC مفتوحة المصدر وشاملة تعمل في كل مكان. لدينا هدفان في الاعتبار مع SDK هذا:
أنشئ حزمة SDK لعميل LiveKit مستقل ومتعدد الأنظمة الأساسية لـ Rustaceans.
إنشاء نواة مشتركة لحزم SDK الأخرى الخاصة بالنظام الأساسي (مثل Unity وUnreal وiOS وAndroid)
بخصوص (2)، لقد قمنا بالفعل بتطوير عدد من حزم SDK للعملاء للعديد من الأنظمة الأساسية وواجهنا بعض التحديات في هذه العملية:
يوجد قدر كبير من منطق الأعمال/التحكم في بروتوكول الإشارات الخاص بنا وWebRTC. حاليًا، يجب تنفيذ هذا المنطق في كل منصة جديدة ندعمها.
التفاعلات مع أجهزة الوسائط والتشفير/فك التشفير خاصة بكل نظام أساسي وإطار عمل.
بالنسبة للأطر متعددة المنصات (مثل Unity وFlutter وReact Native)، أثبتت المهام المذكورة أعلاه أنها مؤلمة للغاية.
وبالتالي، فقد افترضنا أن Rust SDK، وهو شيء أردنا بناءه على أي حال، والذي يشمل كل منطق أعمالنا وواجهات برمجة التطبيقات الخاصة بالمنصة في مجموعة نظيفة من التجريدات، يمكن أن يكون أيضًا بمثابة الأساس لحزم SDK الأخرى لدينا!
سنستخدمها أولاً كأساس لـ Unity SDK (قيد التطوير)، ولكن بمرور الوقت، ستعمل على تشغيل حزم SDK الأخرى أيضًا.
النظام البيئي LiveKit | |
---|---|
حزم SDK في الوقت الفعلي | مكونات React · المتصفح · مكونات Swift · iOS/macOS/visionOS · Android · Flutter · React Native · Rust · Node.js · Python · Unity (الويب) · Unity (إصدار تجريبي) |
واجهات برمجة تطبيقات الخادم | Node.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (المجتمع) |
أطر الوكلاء | بايثون · الملعب |
خدمات | خادم LiveKit · الخروج · الدخول · SIP |
موارد | المستندات · أمثلة على التطبيقات · السحابة · الاستضافة الذاتية · واجهة سطر الأوامر (CLI). |