Sdílet prostřednictvím


Rychlý start: Přidání video efektů do videohovorů

Pomocí funkce Efekty videa můžete do videa přidávat efekty ve videohovorech. Tato funkce umožňuje vývojářům vytvářet vizuální efekty na pozadí a nahrazení videa na pozadí do volajícího prostředí. 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í. To je zvlášť užitečné v kontextu telehealth, kdy poskytovatel nebo pacient může chtít zakrýt okolí, aby chránil citlivé informace nebo identifikovatelné osobní údaje. Rozostření pozadí se dá použít ve všech scénářích virtuálních událostí, včetně telebankingu a virtuálních sluchů, k ochraně osobních údajů uživatelů. Kromě rozšířené důvěrnosti umožňuje rozostření pozadí větší kreativitu výrazu, což uživatelům umožňuje nahrávat vlastní pozadí pro hostování zábavnějšího a přizpůsobeného prostředí volání.

Poznámka:

Knihovnu volajících efektů nelze použít samostatně a může fungovat pouze v případě, že se používá s klientskou knihovnou Azure Communication Calling pro WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Použití video efektů

Nainstalujte balíček .

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

Důležité

V tomto rychlém startu se používá verze 1.13.1 sady SDK pro volání služeb Azure Communication Services (nebo vyšší) a verze sady SDK pro volání služeb Azure Communication Services větší než nebo equil.1.0.1

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

Další podrobnosti o volací stránce balíčku npm s efekty comm najdete tady .

Poznámka:

V současné době se podpora vytváření efektů na pozadí videa podporuje jenom v prohlížeči Chrome a Edge (Windows a Mac) a Desktopu Mac Safari.

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)

Pokud chcete použít video efekty se sadou AZURE Communication Calling SDK, potřebujete VideoEffects po vytvoření LocalVideoStreamrozhraní API funkce spustit LocalVideoStream a zastavit efekty videa:

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 není obrázku nebo je nedostupná nebo 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); 
}

Změnu obrázku pro tento efekt můžete provést předáním prostřednictvím metody 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 funkcí efektů videa:

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

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

Kdykoli, 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();

Poznámka:

Aby bylo možné použít video efekty na sadě SDK pro volání iOS, 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 událostí, včetně telebankingu a virtuálních sluchů, k ochraně osobních údajů uživatelů.

Použití video efektů

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žadavek iOS je nová verze a nejnovější verze, které jí předchází.

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ž byl efekt videa úspěšně povolen.
  • onVideoEffectDisabled: Událost, která se aktivuje, když byl 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 se sadou SDK pro volání komunikace Azure, potřebujete po vytvoření LocalVideoStreamrozhraní VideoEffects API LocalVideoStream funkce povolit nebo zakázat video efekty:

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

a 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ý umožňuje rozostření pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat LocalVideoEffectsFeature funkci z platné LocalVideoStream.

  • Vytvořte nový objekt efektu rozostření pozadí:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
  • Zkontrolujte, jestli BackgroundBlurEffect je objekt podporovaný, a zavolejte Enable ho videoEffectsFeature :
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}

Zakázání efektu rozostření pozadí:

localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Náhrada na pozadí

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

  • Vytvořte nový objekt efektu videa na pozadí:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
  • Nastavte vlastní pozadí předáním obrázku přes vyrovnávací paměť.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
  • Zkontrolujte, jestli BackgroundReplacementEffect je objekt podporovaný, a zavolejte Enable ho videoEffectsFeature :
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}

Zakázání efektu videa pro nahrazení pozadí:

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 událostí, včetně telebankingu a virtuálních sluchů, k ochraně osobních údajů uživatelů.

Tento rychlý start vychází z rychlého startu: Přidejte do své aplikace pro Android videohovory 1:1.

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ž byl efekt videa úspěšně povolen.
  • OnVideoEffectDisabledListener: Událost, která se aktivuje, když byl efekt videa úspěšně zakázán.
  • OnVideoEffectErrorListener: Událost, která se aktivuje při selhání operace efektu videa.

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

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

Jakmile objekt máte VideoEffectsLocalVideoStreamFeature , můžete se přihlásit k odběru událostí:

Pokud chcete použít video efekty se sadou SDK pro volání komunikace Azure, potřebujete po vytvoření LocalVideoStreamrozhraní VideoEffects API LocalVideoStream funkce povolit nebo zakázat video efekty:

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

a 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 efekt videa, který umožňuje rozostření pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat VideoEffectsLocalVideoStreamFeature funkci z platné LocalVideoStream.

Povolení efektu rozostření pozadí:

  • Vytvořte metodu VideoEFfects , která získá odběr funkce k odběru událostí:
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);
}

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

Zakázání efektu rozostření pozadí:

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

Náhrada 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.

Povolení efektu videa na pozadí:

  • Vytvořte metodu VideoEFfects , která získá odběr funkce k odběru událostí:
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);
}

  • Vytvořte nový objekt efektu videa na pozadí:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
  • Nastavte vlastní pozadí předáním obrázku přes vyrovnávací paměť.
//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);
  • Volání EnableEffect objektu videoEffectsFeature :
public void enableBackgroundReplacement() {
    videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}

Zakázání efektu videa pro nahrazení pozadí:

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

Poznámka:

Aby bylo možné použít video efekty 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 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 událostí, včetně telebankingu a virtuálních sluchů, k ochraně osobních údajů uživatelů.

Tento rychlý start vychází z rychlého startu: Přidejte do své aplikace pro Windows videohovory 1:1.

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ž byl efekt videa úspěšně povolen.
  • VideoEffectDisabledListener: Událost, která se aktivuje, když byl efekt videa úspěšně zakázán.
  • VideoEffectErrorListener: Událost, která se aktivuje při selhání operace efektu videa.

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

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

Jakmile objekt máte VideoEffectsLocalVideoStreamFeature , můžete se přihlásit k odběru událostí:

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

Jakmile vytvoříte rozhraní LocalVideoStreamAPI funkce, musíte získat VideoEffects rozhraní API LocalVideoStream pro povolení nebo zakázání video efektů.

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;

a 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ý umožňuje rozostření pozadí osoby. Chcete-li použít efekt videa na pozadí, musíte získat VideoEffectsLocalVideoStreamFeature funkci z platné LocalVideoStream.

Povolení efektu rozostření pozadí:

  • BackgroundBlurEffect Přidejte instanci do MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
  • Vytvořte metodu VideoEFfects , která získá odběr funkce 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);
        }
    }
}

Náhrada 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.

Povolení efektu videa na pozadí:

  • BackgroundReplacementEffect Přidejte instanci do MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
  • Vytvořte metodu VideoEFfects , která získá odběr funkce 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í předáním obrázku přes vyrovnávací paměť.
//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

Další informace najdete v následujících článcích: