خلفية افتراضية وإلغاء ضوضاء لـ LiveKit
أضف تمويه الخلفية واستبدالها والتجميل والتأطير التلقائي وإلغاء الضوضاء بالذكاء الاصطناعي إلى تطبيقات LiveKit. تعمل التأثيرات على جهاز كل مشارك قبل نشر المسار — دون أي تغيير في خادم LiveKit لديك.
كيف يعمل
-
1
غلّف المسار
الفيديو: عيّن TrackProcessor من Effects SDK على مسار الكاميرا. الصوت: مرّر الميكروفون عبر Audio Effects SDK.
-
2
عالج على الجهاز
يجزّئ SDK الإطارات ويحسّنها أو ينظّف الصوت في المتصفح أو التطبيق — باستخدام WebGPU أو WebGL أو WebAssembly على الويب.
-
3
انشر كالمعتاد
ينشر LiveKit المسار المعالَج. ويحصل كل مشترك — من البشر أو الوكلاء — على النتيجة.
الشيفرة
معالجات المسارات في LiveKit هي الطريقة المعتادة لتعديل مسار محلي. ينفّذ المثال واحدًا منها حول Web Video Effects SDK؛ وتضيف النسخة المتفرعة لـ Flutter التأثيرات نفسها إلى LocalVideoTrack على Android وiOS والويب.
- الفيديو: تمويه، خلفيات صور أو فيديو، تجميل، تأطير تلقائي، تصحيح ألوان، أشرطة سفلية
- الصوت: كبت الضوضاء وإزالة صدى الغرفة، إعدادات speed / balanced / quality
- غيّر التأثيرات أثناء المكالمة دون إعادة النشر
import { Track, TrackProcessor, VideoProcessorOptions } from 'livekit-client';
import { tsvb } from 'effects-sdk';
export class EffectsVideoProcessor implements TrackProcessor<Track.Kind.Video, VideoProcessorOptions> {
name = 'effects-sdk';
processedTrack?: MediaStreamTrack;
sdk = new tsvb('YOUR_CUSTOMER_ID');
constructor() {
this.sdk.config({ provider: 'webgpu' });
this.sdk.preload();
}
async init(opts: VideoProcessorOptions) {
this.sdk.clear();
this.sdk.useStream(new MediaStream([opts.track]));
this.processedTrack = this.sdk.getStream()?.getVideoTracks()[0];
await new Promise((ready) => (this.sdk.onReady = ready));
this.sdk.run();
}
async restart(opts: VideoProcessorOptions) {
await this.init(opts);
}
async destroy() {
this.sdk.stop();
this.sdk.clear();
this.processedTrack = undefined;
}
}
import { createLocalVideoTrack } from 'livekit-client';
const processor = new EffectsVideoProcessor();
const cameraTrack = await createLocalVideoTrack();
await cameraTrack.setProcessor(processor);
await room.localParticipant.publishTrack(cameraTrack);
// Change effects at any time, without republishing
processor.sdk.setBlur(0.6);
processor.sdk.setBackground('https://example.com/office.jpg');
import { atsvb } from 'audio-effects-sdk';
const sdk = new atsvb('YOUR_CUSTOMER_ID');
sdk.config({ preset: 'speed', sample_rate: 16000 });
sdk.preload();
const mic = await navigator.mediaDevices.getUserMedia({ audio: true });
sdk.useStream(mic);
sdk.onReady = async () => {
sdk.run();
const cleanTrack = sdk.getStream().getAudioTracks()[0];
// Publish the processed track instead of the raw microphone
await room.localParticipant.publishTrack(cleanTrack);
};
// pubspec.yaml: livekit_client from github.com/EffectsSDK/livekit-client-sdk-flutter
// Web only: load tsvb-web.js in index.html and call this first
VideoEffectsSDKExt.initialize('YOUR_CUSTOMER_ID');
final videoTrack = await LocalVideoTrack.createCameraTrack(
CameraCaptureOptions(effectsSdkRequired: true),
);
await videoTrack.start();
// Android and iOS: authorize the track
final status = await videoTrack.auth('YOUR_CUSTOMER_ID');
if (status == AuthStatus.active) {
await videoTrack.setPipelineMode(PipelineMode.blur);
await videoTrack.setBlurPower(0.6);
}
أسئلة
تبني باستخدام Flutter؟ راجع دمج Flutter.
هل يعمل مع LiveKit Cloud وLiveKit المستضاف ذاتيًا؟
نعم. تُطبَّق التأثيرات على جهاز المشارك قبل نشر المسار، لذا يتلقى الخادم — سواء LiveKit Cloud أو خادمك — مسارًا معالَجًا مسبقًا. لا شيء يتغيّر على جانب الخادم.
ما الفرق بينه وبين مرشح الضوضاء المدمج في LiveKit؟
يعمل Effects SDK بالكامل على جهاز المستخدم النهائي على الويب وiOS وAndroid وسطح المكتب، ويعمل مع أي نشر لـ LiveKit، ويأتي مع تأثيرات الفيديو في نفس عائلة SDK. اختر الإعدادات المسبقة (speed وbalanced وquality) التي تناسب عتاد مستخدميك.
هل يمكنني تغيير التأثيرات أثناء المكالمة؟
نعم. يمكن تبديل التمويه والخلفيات والتجميل والتأطير وغيرها من التأثيرات في أي وقت دون إعادة إنشاء المسار أو إعادة نشره.
هل يعمل مع وكلاء الصوت في LiveKit؟
نعم. نظّف ميكروفون المستخدم باستخدام Audio Effects SDK قبل النشر، فيحصل وكيلك على صوت خالٍ من ضوضاء الخلفية وصدى الغرفة. راجع إلغاء الضوضاء لوكلاء الصوت بالذكاء الاصطناعي.
ما حزم LiveKit SDK المدعومة؟
livekit-client للويب (JavaScript/TypeScript) عبر TrackProcessor، وLiveKit Flutter على Android وiOS والويب عبر نسختنا المتفرعة من Flutter SDK.
تدمج مع LiveKit؟
أخبرنا عن إعداد LiveKit لديك — ويب أو Flutter أو وكلاء. نساعدك في الدمج.
مستعد للبدء؟ افتح Developer Portal وابدأ تجربة مجانية.