Udostępnij za pośrednictwem


Szybki start: dodawanie efektów wideo do wywołań wideo

Możesz użyć funkcji Efekty wideo, aby dodać efekty do wideo w wywołaniach wideo. Ta funkcja umożliwia deweloperom tworzenie efektów wizualnych w tle i zamiany wideo w tle na środowisko wywołujące. Rozmycie w tle zapewnia użytkownikom mechanizm usuwania rozproszenia uwagi za uczestnikiem, dzięki czemu uczestnicy mogą komunikować się bez zakłócających działań lub poufnych informacji w tle. Jest to szczególnie przydatne w kontekście telehealth, w którym dostawca lub pacjent może chcieć zaciemniać otoczenie, aby chronić poufne informacje lub dane osobowe. Rozmycie w tle można zastosować we wszystkich wirtualnych scenariuszach terminów, w tym telebankingu i wirtualnych przesłuchań, aby chronić prywatność użytkowników. Oprócz zwiększonej poufności rozmycie w tle umożliwia większą kreatywność wyrażeń, dzięki czemu użytkownicy mogą przekazywać niestandardowe tła do hostowania bardziej zabawnego, spersonalizowanego środowiska rozmów.

Uwaga

Biblioteka efektów wywołujących nie może być używana autonomicznie i może działać tylko wtedy, gdy jest używana z biblioteką klienta wywołania komunikacji platformy Azure dla usługi WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Korzystanie z efektów wideo

Instalowanie pakietu

Użyj polecenia , npm install aby zainstalować zestaw SDK efektów usług Azure Communication Services dla języka JavaScript.

Ważne

W tym przewodniku Szybki start użyto wersji zestawu SDK wywoływania usług Azure Communication Services (lub nowszej 1.13.1 ) oraz wersji zestawu SDK wywołań usług Azure Communication Services w wersji nowszej niż lub equil do 1.0.1programu .

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

Zobacz tutaj , aby uzyskać więcej informacji na temat strony pakietu npm efektów połączenia wywołującego.

Uwaga

Obecnie obsługa przeglądarki do tworzenia efektów tła wideo jest obsługiwana tylko w przeglądarkach Chrome i Edge Desktop (Windows i Mac) i Mac Safari Desktop.

Uwaga

Obecnie istnieją dwa dostępne efekty wideo:

  • Rozmycie tła
  • Zamiana tła na obraz (współczynnik proporcji powinien być zgodny z wartością 16:9)

Aby użyć efektów wideo z zestawem AZURE Communication Calling SDK, po utworzeniu LocalVideoStreamelementu należy uzyskać VideoEffects interfejs API funkcji , LocalVideoStream aby uruchomić/zatrzymać efekty wideo:

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

Rozmycie tła

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

Zamiana tła na obraz

Musisz podać adres URL obrazu, który ma zostać zastosowany jako tło.

Ważne

Metoda startEffects zakończy się niepowodzeniem, jeśli adres URL nie jest obrazem lub nie jest osiągalny/nieczytelny.

Uwaga

Bieżące obsługiwane formaty obrazów to: png, jpg, jpeg, tiff, bmp.

Bieżący obsługiwany współczynnik proporcji wynosi 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); 
}

Zmianę obrazu dla tego efektu można wykonać, przekazując go za pośrednictwem metody configure:

const newBackgroundImage = 'https://linkToNewImageFile'; 

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

Efekty przełączania można wykonać przy użyciu tej samej metody w interfejsie API funkcji efektów wideo:

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

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

W dowolnym momencie, jeśli chcesz sprawdzić, jakie efekty są aktywne, możesz użyć activeEffects właściwości . Właściwość activeEffects zwraca tablicę z nazwami bieżących aktywnych efektów i zwraca pustą tablicę, jeśli nie ma żadnych aktywnych efektów.

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

Aby zatrzymać efekty:

await videoEffectsFeatureApi.stopEffects();

Uwaga

Aby używać funkcji Video Effects w zestawie SDK wywoływania systemu iOS, model uczenia maszynowego jest pobierany na urządzenie klienta. Zachęcamy do przejrzenia notatek dotyczących prywatności w aplikacji i zaktualizowania ich odpowiednio, w razie potrzeby.

Możesz użyć funkcji Efekty wideo, aby dodać efekty do wideo w wywołaniach wideo. Rozmycie w tle zapewnia użytkownikom mechanizm usuwania rozproszenia uwagi za uczestnikiem, dzięki czemu uczestnicy mogą komunikować się bez zakłócających działań lub poufnych informacji w tle. Ta funkcja jest szczególnie przydatna w kontekście telehealth, w którym dostawca lub pacjent może chcieć zaciemniać otoczenie w celu ochrony poufnych informacji lub danych osobowych. Rozmycie w tle można zastosować we wszystkich wirtualnych scenariuszach terminów, w tym telebankingu i wirtualnych przesłuchań, aby chronić prywatność użytkowników.

Korzystanie z efektów wideo

Uwaga

Obsługa efektów wideo w systemie iOS jest ograniczona do dwóch najnowszych głównych wersji systemu iOS. Na przykład po wydaniu nowej wersji głównej systemu iOS wymaganie systemu iOS to nowa wersja i najnowsze wersje, które ją poprzedzały.

Obecnie istnieje jeden dostępny efekt wideo: Rozmycie tła.

Obiekt LocalVideoEffectsFeature ma następującą strukturę interfejsu API:

  • enable: włącza efekt wideo na wystąpieniu LocalVideoStream .
  • disable: wyłącza efekt wideo na wystąpieniu LocalVideoStream .
  • isSupported: wskazuje, czy w wystąpieniu LocalVideoStream jest obsługiwany efekt wideo.
  • onVideoEffectEnabled: zdarzenie wyzwalane po pomyślnym włączeniu efektu wideo.
  • onVideoEffectDisabled: Zdarzenie wyzwalane po pomyślnym wyłączeniu efektu wideo.
  • onVideoEffectError: zdarzenie, które jest wyzwalane, gdy operacja efektu wideo kończy się niepowodzeniem.

Po utworzeniu LocalVideoEffectsFeature obiektu można subskrybować zdarzenia, zdarzenia mają następujące delegaty: didEnableVideoEffect, , didDisableVideoEffectdidReceiveVideoEffectError.

Aby użyć funkcji Video Effects z zestawem SDK wywoływania komunikacji platformy Azure, po utworzeniu LocalVideoStreamelementu należy uzyskać VideoEffects interfejs API funkcji , LocalVideoStream aby włączyć/wyłączyć efekty wideo:

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

i zacznij korzystać z interfejsów API, aby włączyć i wyłączyć efekty wideo:

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

Rozmycie tła

Rozmycie tła to efekt wideo, który umożliwia rozmycie tła osoby. Aby użyć efektu wideo w tle, należy uzyskać LocalVideoEffectsFeature funkcję z prawidłowego LocalVideoStreamelementu .

  • Utwórz nowy obiekt Efekt wideo rozmycia tła:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
  • Sprawdź, czy BackgroundBlurEffect jest obsługiwany, i wywołaj videoEffectsFeature obiektEnable:
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}

Aby wyłączyć efekt wideo rozmycia tła:

localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Zamiana tła

Zamiana tła to efekt wideo, który umożliwia osobie ustawianie własnego niestandardowego tła. Aby użyć efektu zamiany tła, należy uzyskać LocalVideoEffectsFeature funkcję z prawidłowego LocalVideoStreamelementu .

  • Utwórz nowy obiekt Efekt zamiany tła wideo:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
  • Ustaw tło niestandardowe, przekazując obraz przez bufor.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
  • Sprawdź, czy BackgroundReplacementEffect jest obsługiwany, i wywołaj videoEffectsFeature obiektEnable:
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}

Aby wyłączyć efekt wideo zamiany tła:

localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)

Uwaga

Aby używać funkcji Video Effects w zestawie SDK wywoływania systemu Android, model uczenia maszynowego jest pobierany na urządzenie klienta. Zachęcamy do przejrzenia notatek dotyczących prywatności w aplikacji i zaktualizowania ich odpowiednio, w razie potrzeby.

Możesz użyć funkcji Efekty wideo, aby dodać efekty do wideo w wywołaniach wideo. Rozmycie w tle zapewnia użytkownikom mechanizm usuwania rozproszenia uwagi za uczestnikiem, dzięki czemu uczestnicy mogą komunikować się bez zakłócających działań lub poufnych informacji w tle. Ta funkcja jest szczególnie przydatna w kontekście telehealth, w którym dostawca lub pacjent może chcieć zaciemniać otoczenie w celu ochrony poufnych informacji lub danych osobowych. Rozmycie w tle można zastosować we wszystkich wirtualnych scenariuszach terminów, w tym telebankingu i wirtualnych przesłuchań, aby chronić prywatność użytkowników.

Ten przewodnik Szybki start jest oparty na przewodniku Szybki start: dodawanie wywołania wideo 1:1 do aplikacji dla systemu Android.

Korzystanie z efektów wideo

Uwaga

Obsługa efektów wideo w systemie Android jest ograniczona do ostatnich czterech głównych wersji systemu Android. Na przykład po wydaniu nowej wersji głównej systemu Android wymaganie systemu Android to nowa wersja i trzy najnowsze wersje, które ją poprzedzają.

Obecnie istnieje jeden dostępny efekt wideo: Rozmycie tła.

Obiekt VideoEffectsLocalVideoStreamFeature ma następującą strukturę interfejsu API:

  • enableEffect: włącza efekt wideo na wystąpieniu LocalVideoStream .
  • disableEffect: wyłącza efekt wideo na wystąpieniu LocalVideoStream .
  • OnVideoEffectEnabledListener: zdarzenie wyzwalane po pomyślnym włączeniu efektu wideo.
  • OnVideoEffectDisabledListener: Zdarzenie wyzwalane po pomyślnym wyłączeniu efektu wideo.
  • OnVideoEffectErrorListener: zdarzenie, które jest wyzwalane, gdy operacja efektu wideo kończy się niepowodzeniem.

VideoEffectDisabledEvent Obiekty VideoEffectEnabledEventi VideoEffectErrorEvent mają następującą strukturę interfejsu API:

  • getVideoEffectName: pobiera nazwę efektu wideo, który wyzwolił zdarzenie.

Po utworzeniu VideoEffectsLocalVideoStreamFeature obiektu możesz subskrybować zdarzenia:

Aby użyć funkcji Video Effects z zestawem SDK wywoływania komunikacji platformy Azure, po utworzeniu LocalVideoStreamelementu należy uzyskać VideoEffects interfejs API funkcji , LocalVideoStream aby włączyć/wyłączyć efekty wideo:

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

i zacznij korzystać z interfejsów API, aby włączyć i wyłączyć efekty wideo:

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

Rozmycie tła

Rozmycie tła to efekt wideo, który umożliwia rozmycie tła osoby. Aby użyć efektu wideo w tle, należy uzyskać VideoEffectsLocalVideoStreamFeature funkcję z prawidłowego LocalVideoStreamelementu .

Aby włączyć efekt wideo rozmycia tła:

  • Utwórz metodę, która uzyskuje VideoEFfects subskrypcję funkcji dla zdarzeń:
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);
}

  • Utwórz nowy obiekt Efekt wideo rozmycia tła:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
  • Wywołanie EnableEffectvideoEffectsFeature obiektu:
public void enableBackgroundBlur() {
    videoEffectsFeature.enableEffect(backgroundBlurEffect);
}

Aby wyłączyć efekt wideo rozmycia tła:

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

Zamiana tła

Zamiana tła to efekt wideo, który umożliwia zastąpienie tła osoby. Aby użyć efektu wideo w tle, należy uzyskać VideoEffectsLocalVideoStreamFeature funkcję z prawidłowego LocalVideoStreamelementu .

Aby włączyć efekt wideo zamiany tła:

  • Utwórz metodę, która uzyskuje VideoEFfects subskrypcję funkcji dla zdarzeń:
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);
}

  • Utwórz nowy obiekt Efekt zamiany tła wideo:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
  • Ustaw tło niestandardowe, przekazując obraz przez bufor.
//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);
  • Wywołanie EnableEffectvideoEffectsFeature obiektu:
public void enableBackgroundReplacement() {
    videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}

Aby wyłączyć efekt wideo zamiany tła:

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

Uwaga

Aby używać funkcji Video Effects w zestawie WINDOWS Calling SDK, model uczenia maszynowego jest pobierany na urządzenie klienta. Zachęcamy do przejrzenia notatek dotyczących prywatności w aplikacji i zaktualizowania ich odpowiednio, w razie potrzeby.

Możesz użyć funkcji Efekty wideo, aby dodać efekty do wideo w wywołaniach wideo. Rozmycie w tle zapewnia użytkownikom mechanizm usuwania rozproszenia uwagi za uczestnikiem, dzięki czemu uczestnicy mogą komunikować się bez zakłócających działań lub poufnych informacji w tle. Ta funkcja jest szczególnie przydatna w kontekście telehealth, w którym dostawca lub pacjent może chcieć zaciemniać otoczenie w celu ochrony poufnych informacji lub danych osobowych. Rozmycie w tle można zastosować we wszystkich wirtualnych scenariuszach terminów, w tym telebankingu i wirtualnych przesłuchań, aby chronić prywatność użytkowników.

Ten przewodnik Szybki start jest oparty na przewodniku Szybki start: dodawanie wywołania wideo 1:1 do aplikacji dla systemu Windows.

Korzystanie z efektów wideo

Obecnie istnieje jeden dostępny efekt wideo: Rozmycie tła.

Obiekt VideoEffectsLocalVideoStreamFeature ma następującą strukturę interfejsu API:

  • EnableEffect: włącza efekt wideo na wystąpieniu LocalVideoStream .
  • DisableEffect: wyłącza efekt wideo na wystąpieniu LocalVideoStream .
  • VideoEffectEnabled: zdarzenie wyzwalane po pomyślnym włączeniu efektu wideo.
  • VideoEffectDisabledListener: Zdarzenie wyzwalane po pomyślnym wyłączeniu efektu wideo.
  • VideoEffectErrorListener: zdarzenie, które jest wyzwalane, gdy operacja efektu wideo kończy się niepowodzeniem.

VideoEffectDisabledEvent Obiekty VideoEffectEnabledEventi VideoEffectErrorEvent mają następującą strukturę interfejsu API:

  • VideoEffectName: pobiera nazwę efektu wideo, który wyzwolił zdarzenie.

Po utworzeniu VideoEffectsLocalVideoStreamFeature obiektu możesz subskrybować zdarzenia:

Aby użyć efektów wideo z zestawem SDK wywoływania komunikacji platformy Azure, dodaj zmienne do strony MainPage.

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

Po utworzeniu elementu LocalVideoStreamnależy uzyskać VideoEffects interfejs API funkcji programu LocalVideoStream , aby włączyć/wyłączyć efekty wideo.

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;

i zacznij korzystać z interfejsów API, aby włączyć i wyłączyć efekty wideo:

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

Rozmycie tła

Rozmycie tła to efekt wideo, który umożliwia rozmycie tła osoby. Aby użyć efektu wideo w tle, należy uzyskać VideoEffectsLocalVideoStreamFeature funkcję z prawidłowego LocalVideoStreamelementu .

Aby włączyć efekt wideo rozmycia tła:

  • BackgroundBlurEffect Dodaj wystąpienie do strony MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
  • Utwórz metodę, która uzyskuje VideoEFfects subskrypcję funkcji dla zdarzeń:
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);
}
  • Włącz i wyłącz efekt rozmycia tła:
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);
        }
    }
}

Zamiana tła

Zamiana tła to efekt wideo, który umożliwia zastąpienie tła osoby. Aby użyć efektu wideo w tle, należy uzyskać VideoEffectsLocalVideoStreamFeature funkcję z prawidłowego LocalVideoStreamelementu .

Aby włączyć efekt wideo zamiany tła:

  • BackgroundReplacementEffect Dodaj wystąpienie do strony MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
  • Utwórz metodę, która uzyskuje VideoEFfects subskrypcję funkcji dla zdarzeń:
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);
}
  • Ustaw tło niestandardowe, przekazując obraz przez bufor.
//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;
  • Włącz i wyłącz efekt zamiany tła:
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);
        }
    }
}

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące artykuły: