Megosztás a következőn keresztül:


Rövid útmutató: Videoeffektusok hozzáadása videohívásokhoz

A Videoeffektusok funkcióval effektusokat adhat a videóhoz videohívásokban. Ez a funkció lehetővé teszi a fejlesztők számára, hogy háttérvizualizációs effektusokat és háttérvideót építsenek a hívási felületre. A háttér elhomályosítója lehetővé teszi a felhasználók számára, hogy eltávolítsák a résztvevők mögötti zavaró tényezőket, hogy a résztvevők zavaró tevékenység vagy bizalmas információk nélkül kommunikálhassanak a háttérben. Ez különösen hasznos a telehealth kontextusában, ahol egy szolgáltató vagy beteg el szeretné takarni a környezetét a bizalmas információk vagy a személyazonosításra alkalmas információk védelme érdekében. A háttér elhomályosítása minden virtuális találkozós forgatókönyvben alkalmazható, beleértve a telebankolást és a virtuális meghallgatásokat is a felhasználói adatvédelem érdekében. A fokozott bizalmasság mellett a háttér elmosása nagyobb kreativitást tesz lehetővé a kifejezésben, lehetővé téve a felhasználók számára, hogy egyéni háttereket töltsenek fel, hogy szórakoztatóbb, személyre szabottabb hívási élményt nyújthassanak.

Feljegyzés

A hívó effektustár nem használható önállóan, és csak akkor működik, ha a WebJS -hez készült Azure Communication Calling ügyféloldali kódtárral (https://www.npmjs.com/package/@azure/communication-calling) használja.

Videóeffektusok használata

Telepítse a(z) csomagot

npm install A parancs használatával telepítse az Azure Communication Services Effects SDK for JavaScriptet.

Fontos

Ez a rövid útmutató az Azure Communication Services Calling SDK(vagy újabb) és 1.13.1 az Azure Communication Services Calling Effects SDK-verziójának nagyobb vagy egyenértékű 1.0.1verzióját használja.

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

A hívásegyenlítési effektusok npm-csomagjának oldaláról itt talál további részleteket.

Feljegyzés

Jelenleg a böngésző csak a Chrome és az Edge Asztali böngésző (Windows és Mac) és a Mac Safari Desktop böngészőben támogatja a video háttéreffektusok létrehozását.

Feljegyzés

Jelenleg két videóeffektus érhető el:

  • Háttér elhomályosul
  • Háttér cseréje képpel (a képaránynak 16:9-nek kell lennie ahhoz, hogy kompatibilis legyen)

Ha videoeffektusokat szeretne használni az Azure Communication Calling SDK-val, miután létrehozott egy effektust LocalVideoStream, le kell kérnie a VideoEffects videóeffektusok indításához/leállításához a LocalVideoStream funkció API-ját:

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

Háttér elhomályosul

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

Háttér cseréje képpel

Meg kell adnia annak a képnek az URL-címét, amelyet ennek az effektusnak a háttereként szeretne megadni.

Fontos

A startEffects metódus sikertelen lesz, ha az URL-cím nem kép, vagy nem érhető el/olvashatatlan.

Feljegyzés

A jelenleg támogatott képformátumok a következők: png, jpg, jpeg, tiff, bmp.

Az aktuális támogatott méretarány 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); 
}

Az effektus képének módosítása a konfigurálási módszeren keresztül történő átadással végezhető el:

const newBackgroundImage = 'https://linkToNewImageFile'; 

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

A váltási effektusok ugyanazzal a módszerrel végezhetők el a videoeffektusok funkció API-n:

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

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

Bármikor, ha ellenőrizni szeretné, hogy mely effektusok aktívak, használhatja a tulajdonságot activeEffects . A activeEffects tulajdonság egy tömböt ad vissza az aktuális aktív effektusok nevével, és üres tömböt ad vissza, ha nincsenek aktív effektusok.

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

Effektusok leállítása:

await videoEffectsFeatureApi.stopEffects();

Feljegyzés

A videoeffektusok iOS-hívó SDK-n való használatához a rendszer letölt egy gépi tanulási modellt az ügyfél eszközére. Javasoljuk, hogy tekintse át az alkalmazás adatvédelmi megjegyzéseit, és szükség esetén frissítse őket ennek megfelelően.

A Videoeffektusok funkcióval effektusokat adhat a videóhoz videohívásokban. A háttér elhomályosítója lehetővé teszi a felhasználók számára, hogy eltávolítsák a résztvevők mögötti zavaró tényezőket, hogy a résztvevők zavaró tevékenység vagy bizalmas információk nélkül kommunikálhassanak a háttérben. Ez a funkció különösen hasznos a telehealth környezetében, ahol egy szolgáltató vagy beteg el szeretné rendősíteni a környezetét a bizalmas információk vagy személyes adatok védelme érdekében. A háttér elhomályosítása minden virtuális találkozós forgatókönyvben alkalmazható, beleértve a telebankolást és a virtuális meghallgatásokat is a felhasználói adatvédelem érdekében.

Videóeffektusok használata

Feljegyzés

Az iOS videóeffektusok támogatása az iOS két legújabb főverziójára korlátozódik. Ha például az iOS egy új főverziója jelenik meg, az iOS-követelmény az új verzió és az azt megelőző legújabb verziók.

Jelenleg egy elérhető videóeffektus érhető el: Háttér elhomályosítása.

Az LocalVideoEffectsFeature objektum az alábbi API-struktúrával rendelkezik:

  • enable: Engedélyezi a videóeffektust a LocalVideoStream példányon.
  • disable: Letiltja a videoeffektust a LocalVideoStream példányon.
  • isSupported: Azt jelzi, hogy a videóeffektus támogatott-e a LocalVideoStream példányon.
  • onVideoEffectEnabled: Olyan esemény, amely akkor aktiválódik, ha egy videoeffektus sikeresen engedélyezve van.
  • onVideoEffectDisabled: Olyan esemény, amely akkor aktiválódik, ha egy videoeffektus sikeresen le lett tiltva.
  • onVideoEffectError: Az esemény, amely akkor aktiválódik, ha egy videoeffektus-művelet meghiúsul.

Miután megkapta az LocalVideoEffectsFeature objektumot, feliratkozhat az eseményekre, az eseményekhez a következő meghatalmazottak tartoznak: didEnableVideoEffect, didDisableVideoEffect, didReceiveVideoEffectError.

Ha videoeffektusokat szeretne használni az Azure Communication Calling SDK-val, miután létrehozott egy LocalVideoStreamszolgáltatást, le kell kérnie a VideoEffects videoeffektusok engedélyezéséhez/letiltásához a LocalVideoStream funkció API-ját:

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

és kezdje el használni az API-kat a videoeffektusok engedélyezéséhez és letiltásához:

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

Háttér elhomályosul

A háttér elhomályosítása egy videoeffektus, amely lehetővé teszi egy személy hátterének elmosódását. A Háttérvideó-effektus használatához be kell szereznie egy funkciót egy LocalVideoEffectsFeature érvényes LocalVideoStreameffektusból.

  • Hozzon létre egy új Háttér blur Video Effect objektumot:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
  • Ellenőrizze, hogy támogatott-e BackgroundBlurEffect , és hívja-e Enable fel az objektumot videoEffectsFeature :
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}

A Háttér elhomályosító videóeffektus letiltása:

localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Háttér cseréje

A háttér cseréje egy videoeffektus, amely lehetővé teszi, hogy egy személy saját egyéni hátteret állítson be. A Háttércsere effektus használatához be kell szereznie egy funkciót egy LocalVideoEffectsFeature érvényes LocalVideoStreameffektusból.

  • Hozzon létre egy új háttércsere videoeffektus objektumot:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
  • Egyéni háttér beállítása a kép pufferen keresztüli átadásával.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
  • Ellenőrizze, hogy támogatott-e BackgroundReplacementEffect , és hívja-e Enable fel az objektumot videoEffectsFeature :
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}

Háttércsere videóeffektus letiltása:

localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)

Feljegyzés

A Video Effects androidos hívó SDK-n való használatához a rendszer letölt egy gépi tanulási modellt az ügyfél eszközére. Javasoljuk, hogy tekintse át az alkalmazás adatvédelmi megjegyzéseit, és szükség esetén frissítse őket ennek megfelelően.

A Videoeffektusok funkcióval effektusokat adhat a videóhoz videohívásokban. A háttér elhomályosítója lehetővé teszi a felhasználók számára, hogy eltávolítsák a résztvevők mögötti zavaró tényezőket, hogy a résztvevők zavaró tevékenység vagy bizalmas információk nélkül kommunikálhassanak a háttérben. Ez a funkció különösen hasznos a telehealth környezetében, ahol egy szolgáltató vagy beteg el szeretné rendősíteni a környezetét a bizalmas információk vagy személyes adatok védelme érdekében. A háttér elhomályosítása minden virtuális találkozós forgatókönyvben alkalmazható, beleértve a telebankolást és a virtuális meghallgatásokat is a felhasználói adatvédelem érdekében.

Ez a rövid útmutató a következő rövid útmutatóra épül: 1:1 videóhívás hozzáadása androidos alkalmazásához .

Videóeffektusok használata

Feljegyzés

Az Android videóeffektusok támogatása az Android utolsó négy fő verziójára korlátozódik. Ha például az Android egy új főverziója jelenik meg, az Android-követelmény az új verzió és az azt megelőző három legújabb verzió.

Jelenleg egy elérhető videóeffektus érhető el: Háttér elhomályosítása.

Az VideoEffectsLocalVideoStreamFeature objektum az alábbi API-struktúrával rendelkezik:

  • enableEffect: Engedélyezi a videóeffektust a LocalVideoStream példányon.
  • disableEffect: Letiltja a videoeffektust a LocalVideoStream példányon.
  • OnVideoEffectEnabledListener: Olyan esemény, amely akkor aktiválódik, ha egy videoeffektus sikeresen engedélyezve van.
  • OnVideoEffectDisabledListener: Olyan esemény, amely akkor aktiválódik, ha egy videoeffektus sikeresen le lett tiltva.
  • OnVideoEffectErrorListener: Az esemény, amely akkor aktiválódik, ha egy videoeffektus-művelet meghiúsul.

A VideoEffectEnabledEvent, VideoEffectDisabledEvent és VideoEffectErrorEvent az objektumok a következő API-struktúrával rendelkeznek:

  • getVideoEffectName: Lekéri az eseményt kiváltó videoeffektus nevét.

Miután megkapta az VideoEffectsLocalVideoStreamFeature objektumot, feliratkozhat az eseményekre:

Ha videoeffektusokat szeretne használni az Azure Communication Calling SDK-val, miután létrehozott egy LocalVideoStreamszolgáltatást, le kell kérnie a VideoEffects videoeffektusok engedélyezéséhez/letiltásához a LocalVideoStream funkció API-ját:

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

és kezdje el használni az API-kat a videoeffektusok engedélyezéséhez és letiltásához:

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

Háttér elhomályosul

A háttér elhomályosítása egy videoeffektus, amely lehetővé teszi egy személy hátterének elmosódását. A Háttérvideó-effektus használatához be kell szereznie egy funkciót egy VideoEffectsLocalVideoStreamFeature érvényes LocalVideoStreameffektusból.

A Háttér elhomályosító videóeffektus engedélyezése:

  • Hozzon létre egy metódust, amely lekérte a VideoEFfects szolgáltatás előfizetését az eseményekre:
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);
}

  • Hozzon létre egy új Háttér blur Video Effect objektumot:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
  • Az objektum meghívása EnableEffect videoEffectsFeature :
public void enableBackgroundBlur() {
    videoEffectsFeature.enableEffect(backgroundBlurEffect);
}

A Háttér elhomályosító videóeffektus letiltása:

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

Háttér cseréje

A háttér cseréje egy videoeffektus, amely lehetővé teszi egy személy hátterének cseréjét. A Háttérvideó-effektus használatához be kell szereznie egy funkciót egy VideoEffectsLocalVideoStreamFeature érvényes LocalVideoStreameffektusból.

A háttércsere videóeffektusának engedélyezése:

  • Hozzon létre egy metódust, amely lekérte a VideoEFfects szolgáltatás előfizetését az eseményekre:
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);
}

  • Hozzon létre egy új háttércsere videoeffektus objektumot:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
  • Egyéni háttér beállítása a kép pufferen keresztüli átadásával.
//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);
  • Az objektum meghívása EnableEffect videoEffectsFeature :
public void enableBackgroundReplacement() {
    videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}

Háttércsere videóeffektus letiltása:

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

Feljegyzés

A Video Effects windowsos hívó SDK-n való használatához a rendszer letölt egy gépi tanulási modellt az ügyfél eszközére. Javasoljuk, hogy tekintse át az alkalmazás adatvédelmi megjegyzéseit, és szükség esetén frissítse őket ennek megfelelően.

A Videoeffektusok funkcióval effektusokat adhat a videóhoz videohívásokban. A háttér elhomályosítója lehetővé teszi a felhasználók számára, hogy eltávolítsák a résztvevők mögötti zavaró tényezőket, hogy a résztvevők zavaró tevékenység vagy bizalmas információk nélkül kommunikálhassanak a háttérben. Ez a funkció különösen hasznos a telehealth környezetében, ahol egy szolgáltató vagy beteg el szeretné rendősíteni a környezetét a bizalmas információk vagy személyes adatok védelme érdekében. A háttér elhomályosítása minden virtuális találkozós forgatókönyvben alkalmazható, beleértve a telebankolást és a virtuális meghallgatásokat is a felhasználói adatvédelem érdekében.

Ez a rövid útmutató a következő rövid útmutatóra épül: 1:1 videóhívás hozzáadása windowsos alkalmazáshoz .

Videóeffektusok használata

Jelenleg egy elérhető videóeffektus érhető el: Háttér elhomályosítása.

Az VideoEffectsLocalVideoStreamFeature objektum az alábbi API-struktúrával rendelkezik:

  • EnableEffect: Engedélyezi a videóeffektust a LocalVideoStream példányon.
  • DisableEffect: Letiltja a videoeffektust a LocalVideoStream példányon.
  • VideoEffectEnabled: Olyan esemény, amely akkor aktiválódik, ha egy videoeffektus sikeresen engedélyezve van.
  • VideoEffectDisabledListener: Olyan esemény, amely akkor aktiválódik, ha egy videoeffektus sikeresen le lett tiltva.
  • VideoEffectErrorListener: Az esemény, amely akkor aktiválódik, ha egy videoeffektus-művelet meghiúsul.

A VideoEffectEnabledEvent, VideoEffectDisabledEvent és VideoEffectErrorEvent az objektumok a következő API-struktúrával rendelkeznek:

  • VideoEffectName: Lekéri az eseményt kiváltó videoeffektus nevét.

Miután megkapta az VideoEffectsLocalVideoStreamFeature objektumot, feliratkozhat az eseményekre:

Ha videoeffektusokat szeretne használni az Azure Communication Calling SDK-val, adja hozzá a változókat a MainPage-hez.

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

Miután létrehozott egy LocalVideoStreamfunkciót, le kell kérnie a VideoEffects videoeffektusok engedélyezéséhez/letiltásához szükséges LocalVideoStream funkció API-t.

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;

és kezdje el használni az API-kat a videoeffektusok engedélyezéséhez és letiltásához:

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

Háttér elhomályosul

A háttér elhomályosítása egy videoeffektus, amely lehetővé teszi egy személy hátterének elmosódását. A Háttérvideó-effektus használatához be kell szereznie egy funkciót egy VideoEffectsLocalVideoStreamFeature érvényes LocalVideoStreameffektusból.

A Háttér elhomályosító videóeffektus engedélyezése:

  • Adja hozzá a példányt BackgroundBlurEffect a MainPage-hez.
public sealed partial class MainPage : Page
{
    private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
  • Hozzon létre egy metódust, amely lekérte a VideoEFfects szolgáltatás előfizetését az eseményekre:
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);
}
  • A Háttér elhomályosító effektus engedélyezése és letiltása:
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);
        }
    }
}

Háttér cseréje

A háttér cseréje egy videoeffektus, amely lehetővé teszi egy személy hátterének cseréjét. A Háttérvideó-effektus használatához be kell szereznie egy funkciót egy VideoEffectsLocalVideoStreamFeature érvényes LocalVideoStreameffektusból.

A háttércsere videóeffektusának engedélyezése:

  • Adja hozzá a példányt BackgroundReplacementEffect a MainPage-hez.
public sealed partial class MainPage : Page
{
    private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
  • Hozzon létre egy metódust, amely lekérte a VideoEFfects szolgáltatás előfizetését az eseményekre:
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);
}
  • Egyéni háttér beállítása a kép pufferen keresztüli átadásával.
//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;
  • A Háttércsere effektus engedélyezése és letiltása:
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);
        }
    }
}

Következő lépések

További információért tekintse át az alábbi cikkeket:

  • Tekintse meg a hívó főhős mintáját
  • A felhasználói felületi kódtár használatának első lépései
  • Tudnivalók az SDK-képességek hívásáról
  • További információ a hívás működéséről