Partilhar via


Guia de início rápido: adicionar efeitos de vídeo às suas chamadas de vídeo

Você pode usar o recurso Efeitos de vídeo para adicionar efeitos ao seu vídeo em chamadas de vídeo. Esse recurso permite que os desenvolvedores criem efeitos visuais de fundo e substituição de vídeo em segundo plano na experiência de chamada. O desfoque de fundo fornece aos usuários o mecanismo para remover distrações atrás de um participante para que os participantes possam se comunicar sem atividades perturbadoras ou informações confidenciais em segundo plano. Isso é especialmente útil no contexto da telessaúde, onde um provedor ou paciente pode querer obscurecer seu entorno para proteger informações confidenciais ou informações pessoalmente identificáveis. O desfoque de fundo pode ser aplicado em todos os cenários de compromissos virtuais, incluindo telebanco e audiências virtuais, para proteger a privacidade do usuário. Além da confidencialidade aprimorada, o desfoque de fundo permite mais criatividade de expressão, permitindo que os usuários carreguem fundos personalizados para hospedar uma experiência de chamada mais divertida e personalizada.

Nota

A biblioteca de efeitos de chamada não pode ser usada de forma autônoma e só pode funcionar quando usada com a biblioteca de cliente do Azure Communication Calling para WebJS (https://www.npmjs.com/package/@azure/communication-calling).

Usando efeitos de vídeo

Instalar o pacote

Importante

O desfoque de plano de fundo e a substituição de plano de fundo para navegadores de área de trabalho da Web estão disponíveis no GA. Este guia de início rápido usa a versão do SDK de Chamada dos Serviços de Comunicação do Azure de (ou superior) e a versão do SDK de Efeitos de Chamada dos Serviços de 1.13.1 Comunicação do Azure maior ou igual a 1.0.1. Atualmente, o suporte do navegador de desktop para a criação de efeitos de fundo de vídeo só é suportado no Chrome e Edge Desktop Browser (Windows e Mac) e Mac Safari Desktop.

Nota

O desfoque de fundo e a substituição de fundo para o navegador móvel Android Chrome e Android Edge estão disponíveis em pré-visualização pública a partir da compilação 1.29.1 e versões beta posteriores do SDK WebJS.

Use o npm install comando para instalar o SDK de Efeitos dos Serviços de Comunicação do Azure para JavaScript.

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

Veja aqui mais detalhes na página do pacote npm de efeitos de comunicação de chamada.

Nota

Atualmente existem dois efeitos de vídeo disponíveis:

  • Desfoque de fundo
  • Substituição do plano de fundo por uma imagem (a proporção deve ser de 16:9 para ser compatível)

Para usar efeitos de vídeo com o SDK de Chamada de Comunicação do Azure, depois de criar um LocalVideoStream, você precisa obter a VideoEffects API de recurso dos efeitos de LocalVideoStream vídeo para iniciar/parar:

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

Desfoque de fundo

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

Substituição do plano de fundo por uma imagem

Você precisa fornecer o URL da imagem desejada como plano de fundo para esse efeito.

Importante

O startEffects método falhará se o URL não for de uma imagem ou estiver inacessível/ilegível.

Nota

Os formatos de imagem suportados atualmente são: png, jpg, jpeg, tiff, bmp.

A proporção atual suportada é de 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); 
}

A alteração da imagem para este efeito pode ser feita passando-a através do método configure:

const newBackgroundImage = 'https://linkToNewImageFile'; 

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

A alternância de efeitos pode ser feita usando o mesmo método na api de recurso de efeitos de vídeo:

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

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

A qualquer momento, se você quiser verificar quais efeitos estão ativos, você pode usar a activeEffects propriedade. A activeEffects propriedade retorna uma matriz com os nomes dos efeitos ativos atuais e retorna uma matriz vazia se não houver efeitos ativos.

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

Para parar os efeitos:

await videoEffectsFeatureApi.stopEffects();

Nota

Para usar o Video Effects no iOS Calling SDK, um modelo de aprendizado de máquina é baixado para o dispositivo do cliente. Encorajamo-lo a rever as notas de privacidade na sua aplicação e a atualizá-las em conformidade, se necessário.

Você pode usar o recurso Efeitos de vídeo para adicionar efeitos ao seu vídeo em chamadas de vídeo. O desfoque de fundo fornece aos usuários o mecanismo para remover distrações atrás de um participante para que os participantes possam se comunicar sem atividades perturbadoras ou informações confidenciais em segundo plano. Este recurso é especialmente útil no contexto da telessaúde, onde um provedor ou paciente pode querer obscurecer seu ambiente para proteger informações sensíveis ou dados pessoais. O desfoque de fundo pode ser aplicado em todos os cenários de compromissos virtuais, incluindo telebanco e audiências virtuais, para proteger a privacidade do usuário.

Usando efeitos de vídeo

Nota

O suporte a efeitos de vídeo no iOS está limitado às duas versões principais mais recentes do iOS. Por exemplo, quando uma nova versão principal do iOS é lançada, o requisito do iOS é a nova versão e as versões mais recentes que a precederam.

Atualmente, há um efeito de vídeo disponível: desfoque de fundo.

O LocalVideoEffectsFeature objeto tem a seguinte estrutura de API:

  • enable: Habilita um efeito de vídeo na LocalVideoStream instância.
  • disable: Desativa um efeito de vídeo na LocalVideoStream instância.
  • isSupported: Indica se um efeito de vídeo é suportado LocalVideoStream na instância.
  • onVideoEffectEnabled: Evento que é acionado quando um efeito de vídeo foi ativado com êxito.
  • onVideoEffectDisabled: Evento que é acionado quando um efeito de vídeo foi desativado com êxito.
  • onVideoEffectError: Evento que é acionado quando uma operação de efeito de vídeo falha.

Depois de ter o LocalVideoEffectsFeature objeto, você pode se inscrever para os eventos, os eventos têm os seguintes delegados: didEnableVideoEffect, didDisableVideoEffect, didReceiveVideoEffectError.

Para usar os Efeitos de Vídeo com o SDK de Chamada de Comunicação do Azure, depois de criar um LocalVideoStream, você precisa obter a VideoEffects API de recurso do para habilitar/desabilitar Efeitos de LocalVideoStream Vídeo:

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

e comece a usar as APIs para habilitar e desabilitar os efeitos de vídeo:

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

Desfoque de fundo

Desfoque de fundo é um efeito de vídeo que permite que o fundo de uma pessoa seja desfocado. Para usar o Background Video Effect, você precisa obter um LocalVideoEffectsFeature recurso de um arquivo LocalVideoStream.

  • Crie um novo objeto Background Blur Video Effect:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
  • Verifique se BackgroundBlurEffect é suportado e chame Enable o videoEffectsFeature objeto:
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}

Para desativar o efeito de vídeo de desfoque de fundo:

localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)

Substituição em segundo plano

A substituição em segundo plano é um efeito de vídeo que permite que uma pessoa defina seu próprio plano de fundo personalizado. Para usar o Efeito de Substituição em Segundo Plano, você precisa obter um LocalVideoEffectsFeature recurso de um arquivo LocalVideoStream.

  • Crie um novo objeto Background Replacement Video Effect:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
  • Defina um plano de fundo personalizado passando a imagem através de um buffer.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
  • Verifique se BackgroundReplacementEffect é suportado e chame Enable o videoEffectsFeature objeto:
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
    localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}

Para desativar o efeito de vídeo de substituição em segundo plano:

localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)

Nota

Para usar o Video Effects no Android Calling SDK, um modelo de aprendizado de máquina é baixado para o dispositivo do cliente. Encorajamo-lo a rever as notas de privacidade na sua aplicação e a atualizá-las em conformidade, se necessário.

Você pode usar o recurso Efeitos de vídeo para adicionar efeitos ao seu vídeo em chamadas de vídeo. O desfoque de fundo fornece aos usuários o mecanismo para remover distrações atrás de um participante para que os participantes possam se comunicar sem atividades perturbadoras ou informações confidenciais em segundo plano. Este recurso é especialmente útil no contexto da telessaúde, onde um provedor ou paciente pode querer obscurecer seu ambiente para proteger informações sensíveis ou dados pessoais. O desfoque de fundo pode ser aplicado em todos os cenários de compromissos virtuais, incluindo telebanco e audiências virtuais, para proteger a privacidade do usuário.

Este guia de início rápido baseia-se em Guia de início rápido: adicione chamadas de vídeo 1:1 ao seu aplicativo para Android.

Usando efeitos de vídeo

Nota

O suporte a efeitos de vídeo no Android está limitado às últimas quatro versões principais do Android. Por exemplo, quando uma nova versão principal do Android é lançada, o requisito do Android é a nova versão e as três versões mais recentes que a precedem.

Atualmente, há um efeito de vídeo disponível: desfoque de fundo.

O VideoEffectsLocalVideoStreamFeature objeto tem a seguinte estrutura de API:

  • enableEffect: Habilita um efeito de vídeo na LocalVideoStream instância.
  • disableEffect: Desativa um efeito de vídeo na LocalVideoStream instância.
  • OnVideoEffectEnabledListener: Evento que é acionado quando um efeito de vídeo foi ativado com êxito.
  • OnVideoEffectDisabledListener: Evento que é acionado quando um efeito de vídeo foi desativado com êxito.
  • OnVideoEffectErrorListener: Evento que é acionado quando uma operação de efeito de vídeo falha.

Os VideoEffectEnabledEventobjetos , VideoEffectDisabledEvent e VideoEffectErrorEvent têm a seguinte estrutura de API:

  • getVideoEffectName: Obtém o nome do efeito de vídeo que disparou o evento.

Depois de ter o VideoEffectsLocalVideoStreamFeature objeto, você pode se inscrever nos eventos:

Para usar os Efeitos de Vídeo com o SDK de Chamada de Comunicação do Azure, depois de criar um LocalVideoStream, você precisa obter a VideoEffects API de recurso do para habilitar/desabilitar Efeitos de LocalVideoStream Vídeo:

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

e comece a usar as APIs para habilitar e desabilitar os efeitos de vídeo:

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

Desfoque de fundo

Desfoque de fundo é um efeito de vídeo que permite que o fundo de uma pessoa seja desfocado. Para usar o Background Video Effect, você precisa obter um VideoEffectsLocalVideoStreamFeature recurso de um arquivo LocalVideoStream.

Para ativar o efeito de vídeo de desfoque de fundo:

  • Crie um método que obtenha o VideoEFfects recurso Subscreve os eventos:
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);
}

  • Crie um novo objeto Background Blur Video Effect:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
  • Chame EnableEffect o videoEffectsFeature objeto:
public void enableBackgroundBlur() {
    videoEffectsFeature.enableEffect(backgroundBlurEffect);
}

Para desativar o efeito de vídeo de desfoque de fundo:

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

Substituição de fundo

A substituição em segundo plano é um efeito de vídeo que permite que o plano de fundo de uma pessoa seja substituído. Para usar o Background Video Effect, você precisa obter um VideoEffectsLocalVideoStreamFeature recurso de um arquivo LocalVideoStream.

Para ativar o efeito de vídeo de substituição em segundo plano:

  • Crie um método que obtenha o VideoEFfects recurso Subscreve os eventos:
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);
}

  • Crie um novo objeto Background Replacement Video Effect:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
  • Defina um plano de fundo personalizado passando a imagem através de um buffer.
//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);
  • Chame EnableEffect o videoEffectsFeature objeto:
public void enableBackgroundReplacement() {
    videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}

Para desativar o efeito de vídeo de substituição em segundo plano:

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

Nota

Para usar os Efeitos de Vídeo no SDK de Chamada do Windows, um modelo de aprendizado de máquina é baixado para o dispositivo do cliente. Encorajamo-lo a rever as notas de privacidade na sua aplicação e a atualizá-las em conformidade, se necessário.

Você pode usar o recurso Efeitos de vídeo para adicionar efeitos ao seu vídeo em chamadas de vídeo. O desfoque de fundo fornece aos usuários o mecanismo para remover distrações atrás de um participante para que os participantes possam se comunicar sem atividades perturbadoras ou informações confidenciais em segundo plano. Este recurso é especialmente útil no contexto da telessaúde, onde um provedor ou paciente pode querer obscurecer seu ambiente para proteger informações sensíveis ou dados pessoais. O desfoque de fundo pode ser aplicado em todos os cenários de compromissos virtuais, incluindo telebanco e audiências virtuais, para proteger a privacidade do usuário.

Este guia de início rápido se baseia em Guia de início rápido: adicione chamadas de vídeo 1:1 ao seu aplicativo para Windows.

Usando efeitos de vídeo

Atualmente, há um efeito de vídeo disponível: desfoque de fundo.

O VideoEffectsLocalVideoStreamFeature objeto tem a seguinte estrutura de API:

  • EnableEffect: Habilita um efeito de vídeo na LocalVideoStream instância.
  • DisableEffect: Desativa um efeito de vídeo na LocalVideoStream instância.
  • VideoEffectEnabled: Evento que é acionado quando um efeito de vídeo foi ativado com êxito.
  • VideoEffectDisabledListener: Evento que é acionado quando um efeito de vídeo foi desativado com êxito.
  • VideoEffectErrorListener: Evento que é acionado quando uma operação de efeito de vídeo falha.

Os VideoEffectEnabledEventobjetos , VideoEffectDisabledEvent e VideoEffectErrorEvent têm a seguinte estrutura de API:

  • VideoEffectName: Obtém o nome do efeito de vídeo que disparou o evento.

Depois de ter o VideoEffectsLocalVideoStreamFeature objeto, você pode se inscrever nos eventos:

Para usar efeitos de vídeo com o SDK de chamada de comunicação do Azure, adicione as variáveis à MainPage.

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

Depois de criar um LocalVideoStream, você precisa obter a VideoEffects API de recurso do para ativar/desativar efeitos de LocalVideoStream vídeo.

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;

e comece a usar as APIs para habilitar e desabilitar os efeitos de vídeo:

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

Desfoque de fundo

Desfoque de fundo é um efeito de vídeo que permite que o fundo de uma pessoa seja desfocado. Para usar o Background Video Effect, você precisa obter um VideoEffectsLocalVideoStreamFeature recurso de um arquivo LocalVideoStream.

Para ativar o efeito de vídeo de desfoque de fundo:

  • Adicione a BackgroundBlurEffect instância à MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
  • Crie um método que obtenha o VideoEFfects recurso Subscreve os eventos:
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);
}
  • Ative e desative o efeito Desfoque de fundo:
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);
        }
    }
}

Substituição de fundo

A substituição em segundo plano é um efeito de vídeo que permite que o plano de fundo de uma pessoa seja substituído. Para usar o Background Video Effect, você precisa obter um VideoEffectsLocalVideoStreamFeature recurso de um arquivo LocalVideoStream.

Para ativar o efeito de vídeo de substituição em segundo plano:

  • Adicione a BackgroundReplacementEffect instância à MainPage.
public sealed partial class MainPage : Page
{
    private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
  • Crie um método que obtenha o VideoEFfects recurso Subscreve os eventos:
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);
}
  • Defina um plano de fundo personalizado passando a imagem através de um buffer.
//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;
  • Ative e desative o efeito de substituição em segundo plano:
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);
        }
    }
}

Próximos passos

Para obter mais informações, consulte os seguintes artigos: