Aracılığıyla paylaş


Hızlı Başlangıç: Görüntülü aramalarınıza video efektleri ekleme

Görüntülü aramalarda videonuza efektler eklemek için Video efektleri özelliğini kullanabilirsiniz. Bu özellik, geliştiricilerin arama deneyimine arka plan görsel efektleri ve arka plan videosu değişimi oluşturmasını sağlar. Arka plan bulanıklaştırma, kullanıcılara katılımcının arkasındaki dikkat dağıtıcı öğeleri kaldırma mekanizması sağlar, böylece katılımcılar arka planda kesintiye neden olan etkinlikler veya gizli bilgiler olmadan iletişim kurabilir. Bu, özellikle bir sağlayıcının veya hastanın hassas bilgileri veya kişisel bilgileri korumak için çevresini gizleyebileceği telehealth bağlamı açısından kullanışlıdır. Arka plan bulanıklaştırma, kullanıcı gizliliğini korumak için telebanking ve sanal duruşmalar da dahil olmak üzere tüm sanal randevu senaryolarında uygulanabilir. Gelişmiş gizliliğe ek olarak, arka plan bulanıklaştırma, kullanıcıların daha eğlenceli ve kişiselleştirilmiş bir arama deneyimine ev sahipliği yapmak için özel arka planları karşıya yüklemelerine olanak tanıyarak ifadenin daha yaratıcı olmasını sağlar.

Not

Çağırma efekti kitaplığı tek başına kullanılamaz ve yalnızca WebJShttps://www.npmjs.com/package/@azure/communication-calling ( için Azure İletişim Çağrısı istemci kitaplığıyla kullanıldığında kullanılabilir).

Video efektlerini kullanma

paketini yükleyin

npm install JavaScript için Azure İletişim Hizmetleri Efektleri SDK'sını yüklemek için komutunu kullanın.

Önemli

Bu hızlı başlangıçta Azure İletişim Hizmetleri Çağırma SDK'sı 1.13.1 sürümü (veya üzeri) ve Azure İletişim Hizmetleri Çağrı Efektleri SDK'sı sürümünden büyük veya sürümünden daha büyük kullanılır1.0.1.

npm install @azure/communication-calling-effects --save

Çağrı yapan iletişim efektleri npm paket sayfası hakkında daha fazla bilgi için buraya bakın.

Not

Şu anda video arka plan efektleri oluşturmaya yönelik tarayıcı desteği yalnızca Chrome ve Edge Masaüstü Tarayıcısı (Windows ve Mac) ve Mac Safari Desktop'ta desteklenmektedir.

Not

Şu anda iki kullanılabilir video efekti vardır:

  • Arka plan bulanıklaştırma
  • Bir resimle arka plan değiştirme (en boy oranı uyumlu olması için 16:9 olmalıdır)

Azure İletişim Çağrısı SDK'sı ile video efektlerini kullanmak için, bir LocalVideoStreamoluşturduktan sonra video efektlerini başlatmak/durdurmak için özelliğinin LocalVideoStream API'sini almanız VideoEffects gerekir:

import * as AzureCommunicationCallingSDK from '@azure/communication-calling'; 

import { BackgroundBlurEffect, BackgroundReplacementEffect } from '@azure/communication-calling-effects'; 

// Get the video effects feature api on the LocalVideoStream 
// (here, localVideoStream is the LocalVideoStream object you created while setting up video calling)
const videoEffectsFeatureApi = localVideoStream.feature(AzureCommunicationCallingSDK.Features.VideoEffects); 


// Subscribe to useful events 
videoEffectsFeatureApi.on(‘effectsStarted’, () => { 
    // Effects started
});

videoEffectsFeatureApi.on(‘effectsStopped’, () => { 
    // Effects stopped
}); 

videoEffectsFeatureApi.on(‘effectsError’, (error) => { 
    // Effects error
});

Arka plan bulanıklaştırma

// Create the effect instance 
const backgroundBlurEffect = new BackgroundBlurEffect(); 

// Recommended: Check support by using the isSupported method on the feature API
const backgroundBlurSupported = await videoEffectsFeatureApi.isSupported(backgroundBlurEffect);

if (backgroundBlurSupported) { 
    // Use the video effects feature api we created to start effects
    await videoEffectsFeatureApi.startEffects(backgroundBlurEffect); 
}

Bir resimle arka plan değiştirme

Bu efektin arka planı olarak istediğiniz görüntünün URL'sini sağlamanız gerekir.

Önemli

startEffects URL bir görüntü değilse veya erişilemiyorsa/okunamıyorsa yöntem başarısız olur.

Not

Geçerli desteklenen görüntü biçimleri şunlardır: png, jpg, jpeg, tiff, bmp.

Desteklenen geçerli en boy oranı 16:9'dur.

const backgroundImage = 'https://linkToImageFile'; 

// Create the effect instance 
const backgroundReplacementEffect = new BackgroundReplacementEffect({ 
    backgroundImageUrl: backgroundImage
}); 

// Recommended: Check support by using the isSupported method on the feature API
const backgroundReplacementSupported = await videoEffectsFeatureApi.isSupported(backgroundReplacementEffect);

if (backgroundReplacementSupported) { 
    // Use the video effects feature api as before to start/stop effects 
    await videoEffectsFeatureApi.startEffects(backgroundReplacementEffect); 
}

Bu efekt için görüntüyü değiştirmek, yapılandırma yöntemi aracılığıyla geçirilerek yapılabilir:

const newBackgroundImage = 'https://linkToNewImageFile'; 

await backgroundReplacementEffect.configure({ 
    backgroundImageUrl: newBackgroundImage
});

Efektler arasında geçiş, video efektleri özellik api'sinde aynı yöntem kullanılarak yapılabilir:

// Switch to background blur 
await videoEffectsFeatureApi.startEffects(backgroundBlurEffect); 

// Switch to background replacement 
await videoEffectsFeatureApi.startEffects(backgroundReplacementEffect);

Hangi efektlerin etkin olduğunu denetlemek isterseniz istediğiniz zaman özelliğini kullanabilirsiniz activeEffects . activeEffects özelliği geçerli etkin efektlerin adlarını içeren bir dizi döndürür ve etkin efekt yoksa boş bir dizi döndürür.

// Using the video effects feature api
const currentActiveEffects = videoEffectsFeatureApi.activeEffects;

Efektleri durdurmak için:

await videoEffectsFeatureApi.stopEffects();

Not

iOS Arama SDK'sında Video Efektleri'ni kullanmak için müşterinin cihazına bir makine öğrenmesi modeli indirilir. Uygulamanızdaki gizlilik notlarını gözden geçirmenizi ve gerekirse bunları uygun şekilde güncelleştirmenizi öneririz.

Görüntülü aramalarda videonuza efektler eklemek için Video Efektleri özelliğini kullanabilirsiniz. Arka plan bulanıklaştırma, kullanıcılara katılımcının arkasındaki dikkat dağıtıcı öğeleri kaldırma mekanizması sağlar, böylece katılımcılar arka planda kesintiye neden olan etkinlikler veya gizli bilgiler olmadan iletişim kurabilir. Bu özellik, özellikle bir sağlayıcının veya hastanın hassas bilgileri veya kişisel verileri korumak için çevresini gizleyebileceği telehealth bağlamı açısından kullanışlıdır. Arka plan bulanıklaştırma, kullanıcı gizliliğini korumak için telebanking ve sanal duruşmalar da dahil olmak üzere tüm sanal randevu senaryolarında uygulanabilir.

Video efektlerini kullanma

Not

iOS'ta video efektleri desteği, iOS'un en son iki ana sürümüyle sınırlıdır. Örneğin, iOS'un yeni, ana sürümü yayınlandığında, iOS gereksinimi yeni sürüm ve ondan önceki en son sürümdür.

Şu anda kullanılabilir bir Video Efekti vardır: Arka Plan Bulanıklaştırma.

LocalVideoEffectsFeature nesnesi aşağıdaki API yapısına sahiptir:

  • enable: Örnek üzerinde Bir Video Efekti etkinleştirir LocalVideoStream .
  • disable: Örnekte video efektini LocalVideoStream devre dışı bırakır.
  • isSupported: Örnekte video efektinin LocalVideoStream desteklenip desteklenmediğini gösterir.
  • onVideoEffectEnabled: Video Efekti başarıyla etkinleştirildiğinde tetiklenen olay.
  • onVideoEffectDisabled: Video Efekti başarıyla devre dışı bırakıldığında tetiklenen olay.
  • onVideoEffectError: Video Efekti işlemi başarısız olduğunda tetiklenen olay.

Nesnesine sahip LocalVideoEffectsFeature olduktan sonra olaylara abone olabilirsiniz; olaylar şu temsilcilere sahiptir: didEnableVideoEffect, , didDisableVideoEffectdidReceiveVideoEffectError.

Video Efektleri'ni Azure İletişim Çağrısı SDK'sı ile kullanmak için, bir LocalVideoStreamoluşturduktan sonra Video Efektlerini etkinleştirmek/devre dışı bırakmak için özelliğinin LocalVideoStream API'sini almanız VideoEffects gerekir:

// Obtain the Video Effects feature from the LocalVideoStream object that is sending the video.
@State var localVideoEffectsFeature: LocalVideoEffectsFeature?
localVideoEffectsFeature = self.localVideoStreams.first.feature(Features.localVideoEffects)
// Subscribe to the events
public func localVideoEffectsFeature(_ videoEffectsLocalVideoStreamFeature: LocalVideoEffectsFeature, didEnableVideoEffect args: VideoEffectEnabledEventArgs) {
        os_log("Video Effect Enabled, VideoEffectName: %s", log:log, args.videoEffectName)
    }
public func localVideoEffectsFeature(_ videoEffectsLocalVideoStreamFeature: LocalVideoEffectsFeature, didDisableVideoEffect args: VideoEffectDisabledEventArgs) {
    os_log("Video Effect Disabled, VideoEffectName: %s", log:log, args.videoEffectName)
}
public func localVideoEffectsFeature(_ videoEffectsLocalVideoStreamFeature: LocalVideoEffectsFeature, didReceiveVideoEffectError args: VideoEffectErrorEventArgs) {
    os_log("Video Effect Error, VideoEffectName: %s, Code: %s, Message: %s", log:log, args.videoEffectName, args.code, args.message)
}

ve Video Efektleri'ni etkinleştirmek ve devre dışı bırakmak için API'leri kullanmaya başlayın:

localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Arka plan bulanıklaştırma

Arka Plan Bulanıklaştırma, bir kişinin arka planının bulanık olmasına olanak tanıyan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli LocalVideoStreambir 'den bir LocalVideoEffectsFeature özellik edinmeniz gerekir.

  • Yeni bir Arka Plan Bulanıklaştırma Video Efekti nesnesi oluşturun:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
  • Desteklenip desteklenmediğini BackgroundBlurEffect denetleyin ve nesne üzerinde çağrısı Enable yapın videoEffectsFeature :
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}

Arka Plan Bulanıklaştırma Video Efektini devre dışı bırakmak için:

localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Arka Plan Değiştirme

Arka Plan Değiştirme, bir kişinin kendi özel arka planını ayarlamasına olanak tanıyan bir Video Efektidir. Arka Plan Değiştirme Efekti'ni kullanmak için geçerli LocalVideoStreambir 'den bir LocalVideoEffectsFeature özellik edinmeniz gerekir.

  • Yeni bir Arka Plan Değiştirme Video Efekti nesnesi oluşturun:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
  • Görüntüyü arabelleğe geçirerek özel bir arka plan ayarlayın.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
  • Desteklenip desteklenmediğini BackgroundReplacementEffect denetleyin ve nesne üzerinde çağrısı Enable yapın videoEffectsFeature :
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}

Arka Plan Değiştirme Video Efektini devre dışı bırakmak için:

localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)

Not

Android Arama SDK'sında Video Efektleri'ni kullanmak için müşterinin cihazına bir makine öğrenmesi modeli indirilir. Uygulamanızdaki gizlilik notlarını gözden geçirmenizi ve gerekirse bunları uygun şekilde güncelleştirmenizi öneririz.

Görüntülü aramalarda videonuza efektler eklemek için Video Efektleri özelliğini kullanabilirsiniz. Arka plan bulanıklaştırma, kullanıcılara katılımcının arkasındaki dikkat dağıtıcı öğeleri kaldırma mekanizması sağlar, böylece katılımcılar arka planda kesintiye neden olan etkinlikler veya gizli bilgiler olmadan iletişim kurabilir. Bu özellik, özellikle bir sağlayıcının veya hastanın hassas bilgileri veya kişisel verileri korumak için çevresini gizleyebileceği telehealth bağlamı açısından kullanışlıdır. Arka plan bulanıklaştırma, kullanıcı gizliliğini korumak için telebanking ve sanal duruşmalar da dahil olmak üzere tüm sanal randevu senaryolarında uygulanabilir.

Bu hızlı başlangıçta Hızlı Başlangıç: Android için uygulamanıza 1:1 görüntülü arama ekleme adımları temel alır.

Video efektlerini kullanma

Not

Android'de video efektleri desteği, Android'in son dört ana sürümüyle sınırlıdır. Örneğin, Android'in yeni, ana sürümü yayınlandığında, Android gereksinimi yeni sürüm ve ondan önceki en son üç sürümdür.

Şu anda kullanılabilir bir Video Efekti vardır: Arka Plan Bulanıklaştırma.

VideoEffectsLocalVideoStreamFeature nesnesi aşağıdaki API yapısına sahiptir:

  • enableEffect: Örnek üzerinde Bir Video Efekti etkinleştirir LocalVideoStream .
  • disableEffect: Örnekte video efektini LocalVideoStream devre dışı bırakır.
  • OnVideoEffectEnabledListener: Video Efekti başarıyla etkinleştirildiğinde tetiklenen olay.
  • OnVideoEffectDisabledListener: Video Efekti başarıyla devre dışı bırakıldığında tetiklenen olay.
  • OnVideoEffectErrorListener: Video Efekti işlemi başarısız olduğunda tetiklenen olay.

VideoEffectEnabledEventVideoEffectDisabledEvent ve VideoEffectErrorEvent nesneleri aşağıdaki API yapısına sahiptir:

  • getVideoEffectName: Olayı tetikleyen Video Efektinin adını alır.

Nesnesine VideoEffectsLocalVideoStreamFeature sahip olduktan sonra olaylara abone olabilirsiniz:

Video Efektleri'ni Azure İletişim Çağrısı SDK'sı ile kullanmak için, bir LocalVideoStreamoluşturduktan sonra Video Efektlerini etkinleştirmek/devre dışı bırakmak için özelliğinin LocalVideoStream API'sini almanız VideoEffects gerekir:

// Obtain the Video Effects feature from the LocalVideoStream object that is sending the video.
VideoEffectsLocalVideoStreamFeature videoEffectsFeature = currentVideoStream.feature(Features.LOCAL_VIDEO_EFFECTS);
// Create event handlers for the events
private void handleOnVideoEffectEnabled(VideoEffectEnabledEvent args) {
}
private void handleOnVideoEffectDisabled(VideoEffectDisabledEvent args) {
}
private void handleOnVideoEffectError(VideoEffectErrorEvent args) {
}
 
// Subscribe to the events
videoEffectsFeature.addOnVideoEffectEnabledListener(this::handleOnVideoEffectEnabled);
videoEffectsFeature.addOnVideoEffectDisabledListener(this::handleOnVideoEffectDisabled);
videoEffectsFeature.addOnVideoEffectErrorListener(this::handleOnVideoEffectError);

ve Video Efektleri'ni etkinleştirmek ve devre dışı bırakmak için API'leri kullanmaya başlayın:

videoEffectsFeature.enableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
videoEffectsFeature.disableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );

Arka plan bulanıklaştırma

Arka Plan Bulanıklaştırma, bir kişinin arka planının bulanık olmasına olanak tanıyan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli LocalVideoStreambir 'den bir VideoEffectsLocalVideoStreamFeature özellik edinmeniz gerekir.

Arka Plan Bulanıklaştırma Video Efektini etkinleştirmek için:

  • Özellik'in olaylara VideoEFfects abone olmasını sağlayan bir yöntem oluşturun:
private void handleOnVideoEffectEnabled(VideoEffectEnabledEvent args) {
   Log.i("VideoEfects", "Effect enabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectDisabled(VideoEffectDisabledEvent args) {
   Log.i("VideoEfects", "Effect disabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectError(VideoEffectErrorEvent args) {
   Log.i("VideoEfects", "Error " + args.getCode() + ":" + args.getMessage()
           + " for effect " + args.getVideoEffectName());
}

VideoEffectsLocalVideoStreamFeature videoEffectsFeature;
public void createVideoEffectsFeature() {
    videoEffectsFeature = currentVideoStream.feature(Features.LOCAL_VIDEO_EFFECTS);
    videoEffectsFeature.addOnVideoEffectEnabledListener(this::handleOnVideoEffectEnabled);
    videoEffectsFeature.addOnVideoEffectDisabledListener(this::handleOnVideoEffectDisabled);
    videoEffectsFeature.addOnVideoEffectErrorListener(this::handleOnVideoEffectError);
}

  • Yeni bir Arka Plan Bulanıklaştırma Video Efekti nesnesi oluşturun:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
  • nesnesinde videoEffectsFeature çağrısı EnableEffect yapın:
public void enableBackgroundBlur() {
    videoEffectsFeature.enableEffect(backgroundBlurEffect);
}

Arka Plan Bulanıklaştırma Video Efektini devre dışı bırakmak için:

public void disableBackgroundBlur() {
    videoEffectsFeature.disableEffect(backgroundBlurEffect);
}

Arka plan değiştirme

Arka Plan Değiştirme, bir kişinin arka planının değiştirilmesini sağlayan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli LocalVideoStreambir 'den bir VideoEffectsLocalVideoStreamFeature özellik edinmeniz gerekir.

Arka Plan Değiştirme Video Efektini etkinleştirmek için:

  • Özellik'in olaylara VideoEFfects abone olmasını sağlayan bir yöntem oluşturun:
private void handleOnVideoEffectEnabled(VideoEffectEnabledEvent args) {
   Log.i("VideoEfects", "Effect enabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectDisabled(VideoEffectDisabledEvent args) {
   Log.i("VideoEfects", "Effect disabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectError(VideoEffectErrorEvent args) {
   Log.i("VideoEfects", "Error " + args.getCode() + ":" + args.getMessage()
           + " for effect " + args.getVideoEffectName());
}

VideoEffectsLocalVideoStreamFeature videoEffectsFeature;
public void createVideoEffectsFeature() {
    videoEffectsFeature = currentVideoStream.feature(Features.LOCAL_VIDEO_EFFECTS);
    videoEffectsFeature.addOnVideoEffectEnabledListener(this::handleOnVideoEffectEnabled);
    videoEffectsFeature.addOnVideoEffectDisabledListener(this::handleOnVideoEffectDisabled);
    videoEffectsFeature.addOnVideoEffectErrorListener(this::handleOnVideoEffectError);
}

  • Yeni bir Arka Plan Değiştirme Video Efekti nesnesi oluşturun:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
  • Görüntüyü arabelleğe geçirerek özel bir arka plan ayarlayın.
//example of where we can get an image from, in this case, this is from assets in Android folder
InputStream inputStream = getAssets().open("image.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] data = stream.toByteArray();
ByteBuffer dataBuffer = ByteBuffer.allocateDirect(data.length);
dataBuffer.put(data);
dataBuffer.rewind();
backgroundReplacementVideoEffect.setBuffer(dataBuffer);
  • nesnesinde videoEffectsFeature çağrısı EnableEffect yapın:
public void enableBackgroundReplacement() {
    videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}

Arka Plan Değiştirme Video Efektini devre dışı bırakmak için:

public void disableBackgroundReplacement() {
    videoEffectsFeature.disableEffect(backgroundReplacementVideoEffect);
}

Not

Windows Arama SDK'sında Video Efektleri'ni kullanmak için müşterinin cihazına bir makine öğrenmesi modeli indirilir. Uygulamanızdaki gizlilik notlarını gözden geçirmenizi ve gerekirse bunları uygun şekilde güncelleştirmenizi öneririz.

Görüntülü aramalarda videonuza efektler eklemek için Video Efektleri özelliğini kullanabilirsiniz. Arka plan bulanıklaştırma, kullanıcılara katılımcının arkasındaki dikkat dağıtıcı öğeleri kaldırma mekanizması sağlar, böylece katılımcılar arka planda kesintiye neden olan etkinlikler veya gizli bilgiler olmadan iletişim kurabilir. Bu özellik, özellikle bir sağlayıcının veya hastanın hassas bilgileri veya kişisel verileri korumak için çevresini gizleyebileceği telehealth bağlamı açısından kullanışlıdır. Arka plan bulanıklaştırma, kullanıcı gizliliğini korumak için telebanking ve sanal duruşmalar da dahil olmak üzere tüm sanal randevu senaryolarında uygulanabilir.

Bu hızlı başlangıçta Hızlı Başlangıç: Windows için uygulamanıza 1:1 görüntülü arama ekleme adımları temel alır.

Video efektlerini kullanma

Şu anda kullanılabilir bir Video Efekti vardır: Arka Plan Bulanıklaştırma.

VideoEffectsLocalVideoStreamFeature nesnesi aşağıdaki API yapısına sahiptir:

  • EnableEffect: Örnek üzerinde Bir Video Efekti etkinleştirir LocalVideoStream .
  • DisableEffect: Örnekte video efektini LocalVideoStream devre dışı bırakır.
  • VideoEffectEnabled: Video Efekti başarıyla etkinleştirildiğinde tetiklenen olay.
  • VideoEffectDisabledListener: Video Efekti başarıyla devre dışı bırakıldığında tetiklenen olay.
  • VideoEffectErrorListener: Video Efekti işlemi başarısız olduğunda tetiklenen olay.

VideoEffectEnabledEventVideoEffectDisabledEvent ve VideoEffectErrorEvent nesneleri aşağıdaki API yapısına sahiptir:

  • VideoEffectName: Olayı tetikleyen Video Efektinin adını alır.

Nesnesine VideoEffectsLocalVideoStreamFeature sahip olduktan sonra olaylara abone olabilirsiniz:

Azure İletişim Çağırma SDK'sı ile Video Efektleri'ni kullanmak için değişkenleri MainPage'e ekleyin.

public sealed partial class MainPage : Page
{
    private LocalVideoEffectsFeature localVideoEffectsFeature;
}

bir LocalVideoStreamoluşturduktan sonra Video Efektlerini etkinleştirmek/devre dışı bırakmak için özelliğinin LocalVideoStream API'sini almanız VideoEffects gerekir.

private async void CameraList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var selectedCamerea = CameraList.SelectedItem as VideoDeviceDetails;
    cameraStream = new LocalOutgoingVideoStream(selectedCamerea);
    InitVideoEffectsFeature(cameraStream);
    
    var localUri = await cameraStream.StartPreviewAsync();
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
    {
        LocalVideo.Source = MediaSource.CreateFromUri(localUri);
    });
}

public void InitVideoEffectsFeature(LocalOutgoingVideoStream videoStream){
    localVideoEffectsFeature = videoStream.Features.VideoEffects;
    localVideoEffectsFeature.VideoEffectEnabled += LocalVideoEffectsFeature_VideoEffectEnabled;
    localVideoEffectsFeature.VideoEffectDisabled += LocalVideoEffectsFeature_VideoEffectDisabled;
    localVideoEffectsFeature.VideoEffectError += LocalVideoEffectsFeature_VideoEffectError;
}

// Create event handlers for the events
private void LocalVideoEffectsFeature_VideoEffectEnabled(object sender, VideoEffectEnabledEventArgs args)
{
}

private void LocalVideoEffectsFeature_VideoEffectDisabled(object sender, VideoEffectDisabledEventArgs args)
{
}

private void LocalVideoEffectsFeature_VideoEffectError(object sender, VideoEffectErrorEventArgs args)
{
}
 
// Subscribe to the events
videoEffectsFeature.VideoEffectEnabled += VideoEffectsFeature_OnVideoEffectEnabled;
videoEffectsFeature.VideoEffectDisabled += VideoEffectsFeature_OnVideoEffectDisabled;
videoEffectsFeature.VideoEffectError += VideoEffectsFeature_OnVideoEffectError;

ve Video Efektleri'ni etkinleştirmek ve devre dışı bırakmak için API'leri kullanmaya başlayın:

videoEffectsLocalVideoStreamFeature.EnableEffect( {{VIDEO_EFFECT_TO_ENABLE}} );
videoEffectsLocalVideoStreamFeature.DisableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );

Arka plan bulanıklaştırma

Arka Plan Bulanıklaştırma, bir kişinin arka planının bulanık olmasına olanak tanıyan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli LocalVideoStreambir 'den bir VideoEffectsLocalVideoStreamFeature özellik edinmeniz gerekir.

Arka Plan Bulanıklaştırma Video Efektini etkinleştirmek için:

  • BackgroundBlurEffect Örneği MainPage'e ekleyin.
public sealed partial class MainPage : Page
{
    private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
  • Özellik'in olaylara VideoEFfects abone olmasını sağlayan bir yöntem oluşturun:
private async void LocalVideoEffectsFeature_VideoEffectEnabled(object sender, VideoEffectEnabledEventArgs e)
{
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
    {
        BackgroundBlur.IsChecked = true;
    });
}

private async void LocalVideoEffectsFeature_VideoEffectDisabled(object sender, VideoEffectDisabledEventArgs e)
{
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
    {
        BackgroundBlur.IsChecked = false;
    });
}

private void LocalVideoEffectsFeature_VideoEffectError(object sender, VideoEffectErrorEventArgs e)
{
    String effectName = args.VideoEffectName;
    String errorCode = args.Code;
    String errorMessage = args.Message;

    Trace.WriteLine("VideoEffects VideoEffectError on effect " + effectName + "with code "
        + errorCode + "and error message " + errorMessage);
}
  • Arka Plan Bulanıklaştırma efektini etkinleştirin ve devre dışı bırakın:
private async void BackgroundBlur_Click(object sender, RoutedEventArgs e)
{
    if (localVideoEffectsFeature.IsEffectSupported(backgroundBlurVideoEffect))
    {
        var backgroundBlurCheckbox = sender as CheckBox;
        if (backgroundBlurCheckbox.IsChecked.Value)
        {
            localVideoEffectsFeature.EnableEffect(backgroundBlurVideoEffect);
        }
        else
        {
            localVideoEffectsFeature.DisableEffect(backgroundBlurVideoEffect);
        }
    }
}

Arka plan değiştirme

Arka Plan Değiştirme, bir kişinin arka planının değiştirilmesini sağlayan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli LocalVideoStreambir 'den bir VideoEffectsLocalVideoStreamFeature özellik edinmeniz gerekir.

Arka Plan Değiştirme Video Efektini etkinleştirmek için:

  • BackgroundReplacementEffect Örneği MainPage'e ekleyin.
public sealed partial class MainPage : Page
{
    private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
  • Özellik'in olaylara VideoEFfects abone olmasını sağlayan bir yöntem oluşturun:
private async void LocalVideoEffectsFeature_VideoEffectEnabled(object sender, VideoEffectEnabledEventArgs e)
{
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
    {
        BackgroundReplacement.IsChecked = true;
    });
}

private async void LocalVideoEffectsFeature_VideoEffectDisabled(object sender, VideoEffectDisabledEventArgs e)
{
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
    {
        BackgroundReplacement.IsChecked = false;
    });
}

private void LocalVideoEffectsFeature_VideoEffectError(object sender, VideoEffectErrorEventArgs e)
{
    String effectName = args.VideoEffectName;
    String errorCode = args.Code;
    String errorMessage = args.Message;

    Trace.WriteLine("VideoEffects VideoEffectError on effect " + effectName + "with code "
        + errorCode + "and error message " + errorMessage);
}
  • Görüntüyü arabelleğe geçirerek özel bir arka plan ayarlayın.
//example of getting the image from storage folder
MemoryBuffer memoryBuffer = new MemoryBuffer(0);
StorageFolder InstallationFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFile file = InstallationFolder.GetFileAsync("image.jpg").GetAwaiter().GetResult();
if (File.Exists(file.Path))
{
    byte[] imageBytes = File.ReadAllBytes(file.Path);
    memoryBuffer = new MemoryBuffer((uint)imageBytes.Length);
    using (IMemoryBufferReference reference = memoryBuffer.CreateReference())
    {
        byte* dataInBytes;
        uint capacityInBytes;

        (reference.As<IMemoryBufferByteAccess>()).GetBuffer(out dataInBytes, out capacityInBytes);
        for (int i = 0; i < imageBytes.Length; i++)
        {
            dataInBytes[i] = imageBytes[i];
        }
    }
    return memoryBuffer;
}
backgroundReplacementVideoEffect.Buffer = memoryBuffer;
  • Arka Plan Değiştirme efektini etkinleştirin ve devre dışı bırakın:
private async void BackgroundReplacement_Click(object sender, RoutedEventArgs e)
{
    if (localVideoEffectsFeature.IsEffectSupported(backgroundReplacementVideoEffect))
    {
        var backgroundReplacementCheckbox = sender as CheckBox;
        if (backgroundReplacementCheckbox.IsChecked.Value)
        {
            localVideoEffectsFeature.EnableEffect(backgroundReplacementVideoEffect);
        }
        else
        {
            localVideoEffectsFeature.DisableEffect(backgroundReplacementVideoEffect);
        }
    }
}

Sonraki adımlar

Daha fazla bilgi için aşağıdaki makaleleri inceleyin: