Aracılığıyla paylaş


Video arka plan efektlerini etkinleştirme

Video efektleri özelliği, kullanıcıların arka plan bulanıklaştırma ve video değiştirme dahil olmak üzere görüntülü aramalara görsel efektler eklemesine olanak tanır. Bu, özellikle telehealth, telebanking ve sanal işitme gibi bağlamlarda dikkat dağıtıcı öğeleri ortadan kaldırmaya ve hassas bilgileri korumaya yardımcı olur. Arka plan bulanıklaştırma, gizliliği artırır ve özel arka planlar sağlayarak çağrıları daha ilgi çekici ve kişiselleştirilmiş hale getirir.

Not

Çağrı efekti kitaplığıyalnızca WebJS için Azure İletişim Çağrısı istemci kitaplığıyla çalışacak şekilde tasarlanmıştır ve bağımsız olarak kullanılamaz.

Video efektleri uygulama

paketini yükleyin

Önemli

Web Masaüstü tarayıcıları için arka plan bulanıklaştırma ve arka plan değiştirme ga kullanılabilirliği içindedir. Bu hızlı başlangıç, Azure İletişim Hizmetleri Çağrı SDK'sının 1.13.1 sürümü (veya daha üzeri) ve Azure İletişim Hizmetleri Çağrı Efektleri SDK'sının 1.0.1 sürümü veya daha üzerinin kullanıldığı versiyonları kapsamaktadır. Şu anda video arka plan efektleri oluşturmaya yönelik masaüstü tarayıcısı desteği yalnızca Chrome ve Microsoft Edge Masaüstü Tarayıcısı (Windows ve Mac) ve Mac Safari Desktop'ta desteklenmektedir.

Önemli

Android Chrome ve Android Edge mobil tarayıcısı için arka plan bulanıklaştırma ve arka plan değiştirme, derleme 1.34.1 ve sonraki WebJS SDK sürümlerinden itibaren Genel Kullanılabilirlik'te kullanılabilir. Android mobil tarayıcılarında arka plan efektleri uygulamak için çağrı efektleri paketinin 1.1.4 veya üzeri bir sürümünü kullanmanız gerekir.

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

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

Çağrı iletişim efektleri npm paketi hakkında daha fazla bilgi için bkz. İletişim çağrı efektleri.

Not

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

  • Arka fon bulanıklığı
  • 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 LocalVideoStreamkez oluşturduktan sonra video efektlerini başlatmak/durdurmak için özelliğinin VideoEffects API'sini almanız LocalVideoStream 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 fon bulanıklığı

// 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üye ait değilse veya ulaşılamıyorsa/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();

Buzlu cam arka plan efekti ekleme

Buzlu cam arka planlar, buzlu cam pencerelere benzeyen gelişmiş bir efekt üretmek için bulanık bir arka planın gizliliğini seçili görüntünüzün özelleştirmesiyle birleştirir. Bu etkiyi elde etmek için saydam bir PNG görüntüsünü özel arka planınız olarak karşıya yükleyin. Bu resim şirketinizin logosu veya benzersiz bir tasarım olabilir. Buzlu cam efekti, görüntünüzün saydam alanlarını bulanıklaştırırken grafiği arka planın bir parçası olarak korur. Buzlu cam görünümü kullanmak için, JavaScript paketi için Azure İletişim Çağırma Efektleri kitaplığının 1.1.3 sürüm veya daha yenisini kullanmanız gerekir.

Buzlu PNG görüntüsünü hazırlarken en iyi sonuçları elde etmesi için şunları aklınızda bulundurun:

  • Çözünürlük: Yüksek kaliteli arka plan için 1920x1080 piksel kullanın
  • Tam opaklıktan kaçının: Logolar gibi renkli içerikler biraz saydamlık ile en iyi şekilde görünür. %75 opaklık öneririz
  • Kalıp orta gri ön plan: Saydamlığı olan gri tonlamalı PNG için, saydamlık deseninin hem açık hem de koyu arka planlarda görünür olması için resmin tamamının orta gri (değer 128) olarak görüntülenmesini öneririz.

Not

Azure İletişim Hizmetleri, iOS Arama SDK'sı üzerinde Video Efektleri'ni kullanmak için müşterinin cihazına bir makine öğrenmesi modeli indirir. 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 en çok, 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 efektleri uygulama

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.

Azure İletişim Çağrısı SDK'sı ile Video Efektleri'ni kullanmak için, bir LocalVideoStream oluşturduktan sonra, Video Efektlerini etkinleştirmek veya devre dışı bırakmak amacıyla LocalVideoStream'nin özellik API'sini almanız 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)
}

Ardından, 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 fon bulanıklığı

Arka Plan Bulanıklaştırma, uygulamanın bir kişinin arka planını bulanıklaştırmasını sağlayan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli bir LocalVideoStream'den bir LocalVideoEffectsFeature özelliği edinmeniz gerekir.

  • Yeni bir Arka Plan Bulanıklaştırma Video Efekti nesnesi oluşturun:

    @State var backgroundBlurVideoEffect: BackgroundBlurEffect?
    
  • BackgroundBlurEffect'ün desteklenip desteklenmediğini kontrol edin ve Enable nesne üzerinde videoEffectsFeature çağrısını yapın.

    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ını sağlayan bir Video Efektidir. Arka Plan Değiştirme Efekti'ni kullanmak için geçerli bir LocalVideoStream'den bir LocalVideoEffectsFeature özelliği 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
    
  • BackgroundReplacementEffect'ün desteklenip desteklenmediğini kontrol edin ve Enable nesne üzerinde videoEffectsFeature çağrısını yapın.

    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 makale, Android için uygulamanıza 1:1 görüntülü arama eklemeye üzerine inşa eder.

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.

VideoEffectEnabledEvent, VideoEffectDisabledEventve 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:

Azure İletişim Çağrısı SDK'sı ile Video Efektleri'ni kullanmak için, bir LocalVideoStream oluşturduktan sonra Video Efektleri özelliğini etkinleştirmek veya devre dışı bırakmak için LocalVideoStream'nin VideoEffects API'sini almanız 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);

Ardından, 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 fon bulanıklığı

Arka Plan Bulanıklaştırma, uygulamanın bir kişinin arka planını maviye döndürmesini sağlayan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için VideoEffectsLocalVideoStreamFeature'den geçerli bir LocalVideoStream özelliği edinmeniz gerekir.

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

  • VideoEFfects Özelliğini elde eden ve olaylara abone olan bir yöntem oluşturun.
private void handleOnVideoEffectEnabled(VideoEffectEnabledEvent args) {
   Log.i("VideoEffects", "Effect enabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectDisabled(VideoEffectDisabledEvent args) {
   Log.i("VideoEffects", "Effect disabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectError(VideoEffectErrorEvent args) {
   Log.i("VideoEffects", "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();
  • EnableEffect çağrısını videoEffectsFeature nesnesinde 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 VideoEffectsLocalVideoStreamFeature'den geçerli bir LocalVideoStream özelliği edinmeniz gerekir.

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

  • VideoEFfects Özelliğini elde eden ve olaylara abone olan bir yöntem oluşturun.
private void handleOnVideoEffectEnabled(VideoEffectEnabledEvent args) {
   Log.i("VideoEffects", "Effect enabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectDisabled(VideoEffectDisabledEvent args) {
   Log.i("VideoEffects", "Effect disabled for effect " + args.getVideoEffectName());
}
private void handleOnVideoEffectError(VideoEffectErrorEvent args) {
   Log.i("VideoEffects", "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);
  • EnableEffect çağrısını videoEffectsFeature nesnesinde 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ı üzerinde 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 en çok, 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 makale, Windows için uygulamanıza 1:1 görüntülü arama ekleme başlıklı makale üzerine inşa edilmiştir.

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.

VideoEffectEnabledEvent, VideoEffectDisabledEventve 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 LocalVideoStream oluşturduktan sonra, video efektlerini etkinleştirmek/devre dışı bırakmak için VideoEffects özelliğinin LocalVideoStream API'sini almanız gerekir.

private async void CameraList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var selectedCamera = CameraList.SelectedItem as VideoDeviceDetails;
    cameraStream = new LocalOutgoingVideoStream(selectedCamera);
    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;

Ardından, 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 fon bulanıklığı

Arka Plan Bulanıklaştırma, uygulamanın bir kişinin arka planını bulanıklaştırmasını sağlayan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için geçerli bir LocalVideoStream'den bir VideoEffectsLocalVideoStreamFeature özelliği 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();
}
  • VideoEFfects Özelliğini elde eden ve olaylara abone olan 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, uygulamanın bir kişinin arka planını değiştirmesini sağlayan bir Video Efektidir. Arka Plan Video Efekti'ni kullanmak için VideoEffectsLocalVideoStreamFeature'den geçerli bir LocalVideoStream özelliği 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();
}
  • VideoEFfects Özelliğini elde eden ve olaylara abone olan 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