Sdílet prostřednictvím


Povolení efektů na pozadí videa

Funkce Efekty videa umožňuje uživatelům přidávat vizuální efekty do videohovorů, včetně rozostření pozadí a nahrazení videa. To pomáhá eliminovat rušivé vlivy a chránit citlivé informace, zejména v kontextech, jako je telehealth, telebanking a virtuální slyšení. Rozostření na pozadí vylepšuje ochranu osobních údajů a umožňuje vlastní pozadí, takže volání jsou poutavější a přizpůsobená.

Poznámka:

Knihovna volajících efektůje navržená tak, aby fungovala výhradně s klientskou knihovnou Azure Communication Calling pro WebJS a nedá se používat nezávisle.

Implementace efektů videa

Nainstalujte balíček .

Důležité

Podpora rozostření pozadí a nahrazení pozadí pro webové prohlížeče pro plochu je dostupná v rámci obecné dostupnosti. V tomto rychlém startu používáme sadu SDK pro volání Azure Communication Services verze 1.13.1 a vyšší a sadu SDK pro volání s efekty Azure Communication Services verze 1.0.1 a vyšší. Podpora desktopového prohlížeče pro vytváření efektů na pozadí videa se v současné době podporuje jenom v prohlížeči Chrome a prohlížeči Microsoft Edge (Windows a Mac) a desktopovém prohlížeči Mac Safari.

Důležité

Podpora rozostření pozadí a nahrazení pozadí pro mobilní prohlížeč Android Chrome a Android Edge je dostupná v obecné dostupnosti počínaje buildem 1.34.1 a novějšími verzemi sady WebJS SDK. K implementaci efektů na pozadí v mobilních prohlížečích s Androidem musíte použít verzi 1.1.4 nebo vyšší.

npm install Pomocí příkazu nainstalujte sadu Azure Communication Services Effects SDK pro JavaScript.

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

Další informace o balíčku npm pro účinky volání komunikačních se dozvíte v tématu Účinky volání komunikace.

Poznámka:

V současné době existují dva dostupné video efekty:

  • Rozostření pozadí
  • Nahrazení pozadí obrázkem (poměr stran by měl být kompatibilní s 16:9)

Aby bylo možné použít video efekty s Azure Communication Calling SDK, po vytvoření LocalVideoStream je nutné získat API funkce VideoEffects z LocalVideoStream pro spuštění nebo zastavení video efektů.

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
});

Rozostření pozadí

// 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); 
}

Nahrazení pozadí obrázkem

Jako pozadí tohoto efektu musíte zadat adresu URL obrázku, který chcete použít.

Důležité

Metoda startEffects selže, pokud adresa URL neodkazuje na obrázek nebo je nedostupná či nečitelná.

Poznámka:

Aktuální podporované formáty obrázků jsou: png, jpg, jpeg, tiff, bmp.

Aktuální podporovaný poměr stran je 16:9.

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); 
}

Pro změnu obrázku pro tento efekt stačí použít metodu konfigurace:

const newBackgroundImage = 'https://linkToNewImageFile'; 

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

Přepínání efektů je možné provést stejnou metodou v rozhraní API funkce efekty videa:

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

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

Pokud chcete zkontrolovat, jaké efekty jsou aktivní, můžete tuto vlastnost použít activeEffects .

Vlastnost activeEffects vrátí pole s názvy aktuálních aktivních efektů a vrátí prázdnou matici, pokud nejsou aktivní žádné efekty.

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

Zastavení efektů:

await videoEffectsFeatureApi.stopEffects();

Přidání efektu zamrzlého skla na pozadí

Zamrzlé skleněné pozadí kombinují soukromí rozmazaného pozadí s přizpůsobením vybraného obrázku, aby se vytvořil sofistikovaný efekt, který se podobá mrazivým oknům skla. Pokud chcete dosáhnout tohoto efektu, nahrajte průhledný obrázek PNG jako vlastní pozadí. Tento obrázek může být logo vaší společnosti nebo jedinečný design. Efekt zamrzlého skla rozostřuje průhledné oblasti obrázku a současně zachovává grafiku jako součást pozadí. Pokud chcete použít vzhled matného skla, musíte použít verzi 1.1.3 nebo vyšší balíčku Azure Communication Calling Effects library for JavaScript.

Nejlepších výsledků při přípravě zamrzlého obrázku PNG mějte na paměti:

  • Rozlišení: Použití 1920 × 1080 pixelů pro vysoce kvalitní pozadí
  • Vyhněte se plné neprůhlednosti: Barevný obsah, jako jsou loga, vypadá nejlépe s trochou průhlednosti. Doporučujeme 75% neprůhlednost.
  • Středně šedé popředí: Pro formát PNG ve stupních šedé s průhledností doporučujeme mít celý obrázek ve středně šedé (hodnota 128), aby byl vzor průhlednosti viditelný na světlých i tmavých pozadích.

Poznámka:

Pokud chcete použít efekty videa na sadě SDK pro volání iOS, služba Azure Communication Services stáhne do zařízení zákazníka model strojového učení. Doporučujeme, abyste si v případě potřeby zkontrolovali poznámky k ochraně osobních údajů ve vaší aplikaci a odpovídajícím způsobem je aktualizovali.

Pomocí funkce Efekty videa můžete do videa přidávat efekty ve videohovorech. Rozostření pozadí poskytuje uživatelům mechanismus, který umožňuje odebrat rušivé prvky za účastníkem, aby účastníci mohli komunikovat bez rušivé aktivity nebo důvěrných informací na pozadí.

Tato funkce je nejužitečnější v kontextu telehealthu, když poskytovatel nebo pacient by mohl chtít zakrýt okolí, aby chránil citlivé informace nebo osobní údaje. Rozostření pozadí se dá použít ve všech scénářích virtuálních schůzek, včetně telebankingu a virtuálních jednání, k ochraně soukromí uživatelů.

Implementace efektů videa

Poznámka:

Podpora efektů videa v iOSu je omezená na dvě nejnovější hlavní verze iOSu. Například, když je vydána nová hlavní verze iOS, požadavkem iOS je tato nová verze spolu s nejnovějšími předchozími verzemi.

V současné době je k dispozici jeden video efekt: Rozostření pozadí.

Objekt LocalVideoEffectsFeature má následující strukturu rozhraní API:

  • enable: Povolí efekt videa na LocalVideoStream instanci.
  • disable: Zakáže efekt videa na LocalVideoStream instanci.
  • isSupported: Označuje, jestli je u instance podporován LocalVideoStream efekt videa.
  • onVideoEffectEnabled: Událost, která se aktivuje, když je efekt videa úspěšně povolen.
  • onVideoEffectDisabled: Událost, která se aktivuje, když je efekt videa úspěšně zakázán.
  • onVideoEffectError: Událost, která se aktivuje při selhání operace efektu videa.

Jakmile objekt máte LocalVideoEffectsFeature , můžete se přihlásit k odběru událostí, události mají následující delegáty: didEnableVideoEffect, didDisableVideoEffect, didReceiveVideoEffectError.

Pokud chcete použít video efekty s Azure Communication Calling SDK, musíte po vytvoření LocalVideoStream získat VideoEffects rozhraní API funkce LocalVideoStream pro povolení nebo zakázání video efektů:

// 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)
}

Pak začněte používat rozhraní API k povolení a zakázání video efektů:

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

Rozostření pozadí

Rozostření pozadí je efekt videa, který aplikaci umožňuje rozostřit pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat funkci LocalVideoEffectsFeature z platné LocalVideoStream.

  • Vytvořte nový objekt efektu rozostření pozadí:

    @State var backgroundBlurVideoEffect: BackgroundBlurEffect?
    
  • Zkontrolujte, jestli je BackgroundBlurEffect podporován, a zavolejte Enable na objektu videoEffectsFeature.

    if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
    {
        localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
    }
    

Jak zakázat efekt rozostření pozadí videa:

localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Výměna pozadí

Nahrazení pozadí je efekt videa, který umožňuje osobě nastavit vlastní pozadí. Chcete-li použít efekt nahrazení pozadí, musíte získat funkcionalitu LocalVideoEffectsFeature z platné LocalVideoStream.

  • Vytvořte nový objekt efektu videa pro výměnu pozadí:

    @State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
    
  • Nastavte vlastní pozadí prostřednictvím obrázku předaného datovým bufferem.

    let image = UIImage(named:"image.png")
    guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
    return
    }
    backgroundReplacementVideoEffect.buffer = imageData
    
  • Zkontrolujte, jestli je BackgroundReplacementEffect podporován, a zavolejte Enable na objektu videoEffectsFeature.

    if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
    {
        localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
    }
    

Chcete-li zakázat efekt nahrazení pozadí ve videu

localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)

Poznámka:

Aby bylo možné použít video efekty v sadě Android Calling SDK, stáhne se do zařízení zákazníka model strojového učení. Doporučujeme, abyste si v případě potřeby zkontrolovali poznámky k ochraně osobních údajů ve vaší aplikaci a odpovídajícím způsobem je aktualizovali.

Pomocí funkce Efekty videa můžete do videa přidávat efekty ve videohovorech. Rozostření pozadí poskytuje uživatelům mechanismus, který umožňuje odebrat rušivé prvky za účastníkem, aby účastníci mohli komunikovat bez rušivé aktivity nebo důvěrných informací na pozadí. Tato funkce je obzvláště užitečná v kontextu telehealth, kdy poskytovatel nebo pacient může chtít zakrýt okolí, aby chránil citlivé informace nebo osobní údaje. Rozostření pozadí se dá použít ve všech scénářích virtuálních schůzek, včetně telebankingu a virtuálních jednání, k ochraně soukromí uživatelů.

Tento článek vychází z přidání videohovorů 1:1 do vaší aplikace pro Android.

Použití video efektů

Poznámka:

Podpora efektů videa v Androidu je omezená na poslední čtyři hlavní verze Androidu. Například když je vydána nová hlavní verze Androidu, požadavek na Android je nová verze a tři nejnovější verze, které jí předchází.

V současné době je k dispozici jeden video efekt: Rozostření pozadí.

Objekt VideoEffectsLocalVideoStreamFeature má následující strukturu rozhraní API:

  • enableEffect: Povolí efekt videa na LocalVideoStream instanci.
  • disableEffect: Zakáže efekt videa na LocalVideoStream instanci.
  • OnVideoEffectEnabledListener: Událost, která se aktivuje, když je efekt videa úspěšně povolen.
  • OnVideoEffectDisabledListener: Událost, která se aktivuje, když je efekt videa úspěšně zakázán.
  • OnVideoEffectErrorListener: Událost, která se aktivuje při selhání operace efektu videa.

Objekty VideoEffectEnabledEventa VideoEffectErrorEvent objekty VideoEffectDisabledEventmají následující strukturu rozhraní API:

  • getVideoEffectName: Získá název efektu videa, který aktivoval událost.

Jakmile máte objektVideoEffectsLocalVideoStreamFeature, můžete se přihlásit k událostem:

Pokud chcete použít video efekty se sadou SDK pro volání Azure, musíte po vytvoření LocalVideoStream získat funkční rozhraní API VideoEffects z LocalVideoStream pro povolení nebo zakázání video efektů.

// 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);

Pak začněte používat rozhraní API k povolení a zakázání video efektů:

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

Rozostření pozadí

Rozostření pozadí je video efekt, který umožňuje aplikaci rozmazat pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat VideoEffectsLocalVideoStreamFeature funkci z platné LocalVideoStream.

Pro povolení efektu rozostření pozadí postupujte následovně:

  • Vytvořte metodu, která získá VideoEFfects funkci a přihlásí se k odběru událostí.
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);
}

  • Vytvořte nový objekt efektu rozostření pozadí:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
  • Zavolejte EnableEffect na objekt videoEffectsFeature :
public void enableBackgroundBlur() {
    videoEffectsFeature.enableEffect(backgroundBlurEffect);
}

Jak zakázat efekt rozostření pozadí videa:

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

Výměna pozadí

Nahrazení pozadí je efekt videa, který umožňuje nahradit pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat VideoEffectsLocalVideoStreamFeature funkci z platné LocalVideoStream.

Pro povolení efektu nahrazení pozadí ve videu:

  • Vytvořte metodu, která získá VideoEFfects funkci a přihlásí se k odběru událostí.
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);
}

  • Vytvořte nový objekt efektu videa pro výměnu pozadí:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
  • Nastavte vlastní pozadí prostřednictvím obrázku předaného datovým bufferem.
//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);
  • Zavolejte EnableEffect na objekt videoEffectsFeature :
public void enableBackgroundReplacement() {
    videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}

Chcete-li zakázat efekt nahrazení pozadí ve videu

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

Poznámka:

Pokud chcete použít efekty videa v sadě Windows Calling SDK, stáhne se do zařízení zákazníka model strojového učení. Doporučujeme, abyste si v případě potřeby zkontrolovali poznámky k ochraně osobních údajů ve vaší aplikaci a odpovídajícím způsobem je aktualizovali.

Pomocí funkce Efekty videa můžete do videa přidávat efekty ve videohovorech. Rozostření pozadí poskytuje uživatelům mechanismus, který umožňuje odebrat rušivé prvky za účastníkem, aby účastníci mohli komunikovat bez rušivé aktivity nebo důvěrných informací na pozadí.

Tato funkce je nejužitečnější v kontextu telemedicíny, kdy poskytovatel nebo pacient mohou chtít zakrýt okolí, aby chránili citlivé informace nebo osobní údaje. Rozostření pozadí se dá použít ve všech scénářích virtuálních schůzek, včetně telebankingu a virtuálních jednání, k ochraně soukromí uživatelů.

Tento článek vychází z přidání videohovorů 1:1 do vaší aplikace pro Windows.

Použití video efektů

V současné době je k dispozici jeden video efekt: Rozostření pozadí.

Objekt VideoEffectsLocalVideoStreamFeature má následující strukturu rozhraní API:

  • EnableEffect: Povolí efekt videa na LocalVideoStream instanci.
  • DisableEffect: Zakáže efekt videa na LocalVideoStream instanci.
  • VideoEffectEnabled: Událost, která se aktivuje, když je efekt videa úspěšně povolen.
  • VideoEffectDisabledListener: Událost, která se aktivuje, když je efekt videa úspěšně zakázán.
  • VideoEffectErrorListener: Událost, která se aktivuje při selhání operace efektu videa.

Objekty VideoEffectEnabledEventa VideoEffectErrorEvent objekty VideoEffectDisabledEventmají následující strukturu rozhraní API:

  • VideoEffectName: Získá název efektu videa, který aktivoval událost.

Jakmile máte objektVideoEffectsLocalVideoStreamFeature, můžete se přihlásit k událostem:

Pokud chcete použít video efekty se sadou SDK pro volání komunikace Azure, přidejte proměnné do MainPage.

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

Po vytvoření LocalVideoStream potřebujete získat LocalVideoStream rozhraní API funkce VideoEffects pro povolení nebo zakázání video efektů.

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;

Pak začněte používat rozhraní API k povolení a zakázání video efektů:

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

Rozostření pozadí

Rozostření pozadí je efekt videa, který aplikaci umožňuje rozostřit pozadí osoby. Chcete-li použít efekt pozadí videa, musíte získat funkci VideoEffectsLocalVideoStreamFeature z platného LocalVideoStream.

Pro povolení efektu rozostření pozadí postupujte následovně:

  • BackgroundBlurEffect Přidejte instanci do MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
  • Vytvořte metodu, která získá VideoEFfects funkci a přihlásí se k odběru událostí.
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);
}
  • Povolte a zakažte efekt Rozostření pozadí:
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);
        }
    }
}

Výměna pozadí

Nahrazení pozadí je efekt videa, který aplikaci umožňuje nahradit pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat VideoEffectsLocalVideoStreamFeature funkci z platné LocalVideoStream.

Pro povolení efektu nahrazení pozadí ve videu:

  • BackgroundReplacementEffect Přidejte instanci do MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
  • Vytvořte metodu, která získá VideoEFfects funkci a přihlásí se k odběru událostí.
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);
}
  • Nastavte vlastní pozadí prostřednictvím obrázku předaného datovým bufferem.
//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;
  • Povolte a zakažte efekt nahrazení pozadí:
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);
        }
    }
}

Další kroky