Guida introduttiva: Aggiungere effetti video alle videochiamate
È possibile usare la funzionalità Effetti video per aggiungere effetti ai video delle videochiamate. Questa funzione consente agli sviluppatori di inserire effetti visivi e video sostitutivi in background nell'esperienza di chiamata. L’opzione Sfocatura dello sfondo fornisce agli utenti la possibilità di rimuovere elementi di distrazione presenti alle spalle di un partecipante in modo che gli intervenuti possano comunicare senza attività di disturbo o informazioni riservate sullo sfondo. Ciò è particolarmente utile nell’ambito della telemedicina, in cui un provider o un paziente potrebbe voler rendere non decifrabile l'ambiente circostante per proteggere informazioni riservate o personali. La sfocatura dello sfondo può essere applicata a tutti gli scenari di appuntamenti virtuali, ivi compresi telebanking e audizioni virtuali, al fine di proteggere la privacy degli utenti. Oltre a una maggiore riservatezza, la sfocatura dello sfondo consente una maggiore creatività espressiva, consentendo agli utenti di caricare sfondi personalizzati per ospitare un'esperienza di chiamata più divertente e personalizzata.
Nota
La libreria di effetti della chiamata non può essere usata in modalità autonoma e può funzionare solo quando viene usata con la libreria client di Chiamata di comunicazione di Azure per WebJS (https://www.npmjs.com/package/@azure/communication-calling).
Uso degli effetti video
Installare il pacchetto
Importante
La sfocatura e la sostituzione dello sfondo per i browser Desktop Web sono disponibili a livello generale. Questa guida introduttiva usa la versione Servizi di comunicazione di Azure Calling SDK di 1.13.1
(o versione successiva) e la versione Servizi di comunicazione di Azure Calling Effects SDK maggiore o uguale a 1.0.1
. Attualmente il supporto del browser desktop per la creazione di effetti di sfondo video è supportato solo in Chrome e Edge Desktop Browser (Windows e Mac), e Mac Safari Desktop.
Nota
La sfocatura dello sfondo e la sostituzione dello sfondo per il browser per dispositivi mobili Android Chrome e Android Edge sono disponibili in anteprima pubblica a partire dalla build 1.29.1 e versioni beta beta di WebJS SDK successive.
Usare il comando npm install
per installare SDK Effetti di Servizi di comunicazione di Azure per JavaScript.
npm install @azure/communication-calling-effects --save
Per altri dettagli sulla pagina del pacchetto npm degli effetti di comunicazione del chiamante, vedere qui.
Nota
Attualmente sono disponibili due effetti video:
- Sfocatura dello sfondo
- Sostituzione dello sfondo con un'immagine (le proporzioni devono essere compatibili con 16:9)
Per usare gli effetti video con Azure Communication Calling SDK, dopo aver creato un LocalVideoStream
, è necessario ottenere l'API VideoEffects
delle funzionalità di LocalVideoStream
per avviare/arrestare gli effetti video:
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
});
Sfocatura dello sfondo
// 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);
}
Sostituzione dello sfondo con un'immagine
Per questo effetto è necessario fornire l'URL dell'immagine desiderata come sfondo.
Importante
Il metodo startEffects
avrà esito negativo se l'URL non è di un'immagine o se risulta irraggiungibile/illeggibile.
Nota
I formati di immagine supportati correnti sono: png, jpg, jpeg, tiff, bmp.
Le proporzioni supportate correnti sono 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);
}
La modifica dell'immagine per questo effetto può essere effettuata tramite il metodo configurare:
const newBackgroundImage = 'https://linkToNewImageFile';
await backgroundReplacementEffect.configure({
backgroundImageUrl: newBackgroundImage
});
Gli effetti di commutazione possono essere eseguiti utilizzando lo stesso metodo nell'API delle funzionalità degli effetti video:
// Switch to background blur
await videoEffectsFeatureApi.startEffects(backgroundBlurEffect);
// Switch to background replacement
await videoEffectsFeatureApi.startEffects(backgroundReplacementEffect);
In qualsiasi momento è possibile controllare quali effetti sono attivi utilizzando la proprietà activeEffects
.
La proprietà activeEffects
restituisce una matrice con i nomi degli effetti attivi correnti e restituisce una matrice vuota se non sono presenti effetti attivi.
// Using the video effects feature api
const currentActiveEffects = videoEffectsFeatureApi.activeEffects;
Per arrestare gli effetti:
await videoEffectsFeatureApi.stopEffects();
Nota
Per usare gli effetti video in iOS Calling SDK, viene scaricato un modello di machine learning nel dispositivo del cliente. È consigliabile esaminare le note sulla privacy nell'applicazione e aggiornarle di conseguenza, se necessario.
È possibile usare la funzionalità Effetti video per aggiungere effetti ai video delle videochiamate. L’opzione Sfocatura dello sfondo fornisce agli utenti la possibilità di rimuovere elementi di distrazione presenti alle spalle di un partecipante in modo che gli intervenuti possano comunicare senza attività di disturbo o informazioni riservate sullo sfondo. Tale funzionalità è particolarmente utile nell’ambito della telemedicina, in cui un provider o un paziente potrebbe voler rendere non decifrabile l'ambiente circostante per proteggere informazioni riservate o dati personali. La sfocatura dello sfondo può essere applicata a tutti gli scenari di appuntamenti virtuali, ivi compresi telebanking e audizioni virtuali, al fine di proteggere la privacy degli utenti.
Uso degli effetti video
Nota
Il supporto degli effetti video in iOS è limitato alle due versioni principali più recenti di iOS. Ad esempio, quando viene rilasciata una nuova versione principale di iOS, il requisito iOS è la nuova versione e le versioni più recenti che l'hanno preceduta.
Attualmente è disponibile un effetto video: sfocatura dello sfondo.
L'oggetto LocalVideoEffectsFeature
ha la struttura API seguente:
enable
: abilita un effetto video nell'istanza diLocalVideoStream
.disable
: disabilita un effetto video nell'istanza diLocalVideoStream
.isSupported
: indica se un effetto video è supportato nell'istanza diLocalVideoStream
.onVideoEffectEnabled
: evento attivato quando un effetto video è stato abilitato correttamente.onVideoEffectDisabled
: evento attivato quando un effetto video è stato disabilitato correttamente.onVideoEffectError
: evento attivato quando un'operazione di effetto video ha esito negativo.
Dopo aver ottenuto l'oggetto LocalVideoEffectsFeature
, è possibile sottoscrivere gli eventi; gli eventi hanno i delegati seguenti: didEnableVideoEffect
, didDisableVideoEffect
, didReceiveVideoEffectError
.
Per usare Effetti video con Azure Communication Calling SDK, dopo aver creato un LocalVideoStream
, è necessario ottenere l'API della funzionalità VideoEffects
di LocalVideoStream
per abilitare/disabilitare Effetti video:
// 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 iniziare a utilizzare le API per abilitare e disabilitare Effetti video:
localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)
Sfocatura dello sfondo
Sfocatura dello sfondo è un effetto video che consente la sfocatura dello sfondo alle spalle di una persona. Per usare l'effetto video dello sfondo, è necessario ottenere una funzionalità LocalVideoEffectsFeature
da un oggetto LocalVideoStream
valido.
- Creare un nuovo oggetto Effetto video sfocatura sfondo:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
- Controllare se
BackgroundBlurEffect
è supportato e chiamareEnable
sull'oggettovideoEffectsFeature
:
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}
Per disabilitare l'effetto video sfocatura dello sfondo:
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)
Sostituzione dello sfondo
Sostituzione dello sfondo è un effetto video che consente a una persona di impostare uno sfondo personalizzato. Per usare l'effetto di sostituzione dello sfondo, è necessario ottenere una funzionalità LocalVideoEffectsFeature
da un oggetto LocalVideoStream
valido.
- Creare un nuovo oggetto Effetto video sostituzione sfondo:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
- Impostare uno sfondo personalizzato passando l'immagine attraverso un buffer.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
- Controllare se
BackgroundReplacementEffect
è supportato e chiamareEnable
sull'oggettovideoEffectsFeature
:
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}
Per disabilitare l'effetto video Sostituzione sfondo:
localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)
Nota
Per usare gli effetti video in Android Calling SDK, viene scaricato un modello di machine learning nel dispositivo del cliente. È consigliabile esaminare le note sulla privacy nell'applicazione e aggiornarle di conseguenza, se necessario.
È possibile usare la funzionalità Effetti video per aggiungere effetti ai video delle videochiamate. L’opzione Sfocatura dello sfondo fornisce agli utenti la possibilità di rimuovere elementi di distrazione presenti alle spalle di un partecipante in modo che gli intervenuti possano comunicare senza attività di disturbo o informazioni riservate sullo sfondo. Tale funzionalità è particolarmente utile nell’ambito della telemedicina, in cui un provider o un paziente potrebbe voler rendere non decifrabile l'ambiente circostante per proteggere informazioni riservate o dati personali. La sfocatura dello sfondo può essere applicata a tutti gli scenari di appuntamenti virtuali, ivi compresi telebanking e audizioni virtuali, al fine di proteggere la privacy degli utenti.
Questa guida introduttiva si basa su Guida introduttiva: Aggiungere videochiamate 1:1 all'app per Android.
Uso degli effetti video
Nota
Il supporto degli effetti video su Android è limitato alle ultime quattro versioni principali di Android. Ad esempio, quando viene rilasciata una nuova versione principale di Android, il requisito Android è la nuova versione e le tre versioni più recenti che lo precedono.
Attualmente è disponibile un effetto video: sfocatura dello sfondo.
L'oggetto VideoEffectsLocalVideoStreamFeature
ha la struttura API seguente:
enableEffect
: abilita un effetto video nell'istanza diLocalVideoStream
.disableEffect
: disabilita un effetto video nell'istanza diLocalVideoStream
.OnVideoEffectEnabledListener
: evento attivato quando un effetto video è stato abilitato correttamente.OnVideoEffectDisabledListener
: evento attivato quando un effetto video è stato disabilitato correttamente.OnVideoEffectErrorListener
: evento attivato quando un'operazione di effetto video ha esito negativo.
Gli oggetti VideoEffectEnabledEvent
, VideoEffectDisabledEvent
e VideoEffectErrorEvent
hanno la struttura API seguente:
getVideoEffectName
: ottiene il nome dell'effetto video che ha attivato l'evento.
Dopo aver ottenuto l'oggetto VideoEffectsLocalVideoStreamFeature
, è possibile sottoscrivere gli eventi:
Per usare Effetti video con Azure Communication Calling SDK, dopo aver creato un LocalVideoStream
, è necessario ottenere l'API della funzionalità VideoEffects
di LocalVideoStream
per abilitare/disabilitare Effetti video:
// 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 iniziare a utilizzare le API per abilitare e disabilitare Effetti video:
videoEffectsFeature.enableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
videoEffectsFeature.disableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
Sfocatura dello sfondo
Sfocatura dello sfondo è un effetto video che consente la sfocatura dello sfondo alle spalle di una persona. Per usare l'effetto video dello sfondo, è necessario ottenere una funzionalità VideoEffectsLocalVideoStreamFeature
da un oggetto LocalVideoStream
valido.
Per abilitare l'effetto video sfocatura dello sfondo:
- Creare un metodo che ottiene la Funzionalità
VideoEFfects
sottoscrive gli eventi:
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);
}
- Creare un nuovo oggetto Effetto video sfocatura sfondo:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
- Chiamare
EnableEffect
sull'oggettovideoEffectsFeature
:
public void enableBackgroundBlur() {
videoEffectsFeature.enableEffect(backgroundBlurEffect);
}
Per disabilitare l'effetto video sfocatura dello sfondo:
public void disableBackgroundBlur() {
videoEffectsFeature.disableEffect(backgroundBlurEffect);
}
Applicare la sostituzione dello sfondo
Sostituzione dello sfondo è un effetto video che consente di sostituire lo sfondo alle spalle di una persona. Per usare l'effetto video dello sfondo, è necessario ottenere una funzionalità VideoEffectsLocalVideoStreamFeature
da un oggetto LocalVideoStream
valido.
Per abilitare l'effetto video Sostituzione sfondo:
- Creare un metodo che ottiene la Funzionalità
VideoEFfects
sottoscrive gli eventi:
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);
}
- Creare un nuovo oggetto Effetto video sostituzione sfondo:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
- Impostare uno sfondo personalizzato passando l'immagine attraverso un 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);
- Chiamare
EnableEffect
sull'oggettovideoEffectsFeature
:
public void enableBackgroundReplacement() {
videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}
Per disabilitare l'effetto video Sostituzione sfondo:
public void disableBackgroundReplacement() {
videoEffectsFeature.disableEffect(backgroundReplacementVideoEffect);
}
Nota
Per usare gli effetti video in Windows Calling SDK, viene scaricato un modello di machine learning nel dispositivo del cliente. È consigliabile esaminare le note sulla privacy nell'applicazione e aggiornarle di conseguenza, se necessario.
È possibile usare la funzionalità Effetti video per aggiungere effetti ai video delle videochiamate. L’opzione Sfocatura dello sfondo fornisce agli utenti la possibilità di rimuovere elementi di distrazione presenti alle spalle di un partecipante in modo che gli intervenuti possano comunicare senza attività di disturbo o informazioni riservate sullo sfondo. Tale funzionalità è particolarmente utile nell’ambito della telemedicina, in cui un provider o un paziente potrebbe voler rendere non decifrabile l'ambiente circostante per proteggere informazioni riservate o dati personali. La sfocatura dello sfondo può essere applicata a tutti gli scenari di appuntamenti virtuali, ivi compresi telebanking e audizioni virtuali, al fine di proteggere la privacy degli utenti.
Questa guida introduttiva si basa su Guida introduttiva: Aggiungere videochiamate 1:1 all'app per Windows.
Uso degli effetti video
Attualmente è disponibile un effetto video: sfocatura dello sfondo.
L'oggetto VideoEffectsLocalVideoStreamFeature
ha la struttura API seguente:
EnableEffect
: abilita un effetto video nell'istanza diLocalVideoStream
.DisableEffect
: disabilita un effetto video nell'istanza diLocalVideoStream
.VideoEffectEnabled
: evento attivato quando un effetto video è stato abilitato correttamente.VideoEffectDisabledListener
: evento attivato quando un effetto video è stato disabilitato correttamente.VideoEffectErrorListener
: evento attivato quando un'operazione di effetto video ha esito negativo.
Gli oggetti VideoEffectEnabledEvent
, VideoEffectDisabledEvent
e VideoEffectErrorEvent
hanno la struttura API seguente:
VideoEffectName
: ottiene il nome dell'effetto video che ha attivato l'evento.
Dopo aver ottenuto l'oggetto VideoEffectsLocalVideoStreamFeature
, è possibile sottoscrivere gli eventi:
Per usare Effetti video con Azure Communication Calling SDK, aggiungere le variabili a MainPage.
public sealed partial class MainPage : Page
{
private LocalVideoEffectsFeature localVideoEffectsFeature;
}
Dopo aver creato un oggetto LocalVideoStream
, è necessario ottenere l'API della funzionalità VideoEffects
di LocalVideoStream
per abilitare/disabilitare Effetti video.
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 iniziare a utilizzare le API per abilitare e disabilitare Effetti video:
videoEffectsLocalVideoStreamFeature.EnableEffect( {{VIDEO_EFFECT_TO_ENABLE}} );
videoEffectsLocalVideoStreamFeature.DisableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
Sfocatura dello sfondo
Sfocatura dello sfondo è un effetto video che consente la sfocatura dello sfondo alle spalle di una persona. Per usare l'effetto video dello sfondo, è necessario ottenere una funzionalità VideoEffectsLocalVideoStreamFeature
da un oggetto LocalVideoStream
valido.
Per abilitare l'effetto video sfocatura dello sfondo:
- Aggiungere l'istanza
BackgroundBlurEffect
a MainPage.
public sealed partial class MainPage : Page
{
private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
- Creare un metodo che ottiene la Funzionalità
VideoEFfects
sottoscrive gli eventi:
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);
}
- Abilitare e disabilitare l'effetto Sfocatura sfondo:
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);
}
}
}
Applicare la sostituzione dello sfondo
Sostituzione dello sfondo è un effetto video che consente di sostituire lo sfondo alle spalle di una persona. Per usare l'effetto video dello sfondo, è necessario ottenere una funzionalità VideoEffectsLocalVideoStreamFeature
da un oggetto LocalVideoStream
valido.
Per abilitare l'effetto video Sostituzione sfondo:
- Aggiungere l'istanza
BackgroundReplacementEffect
a MainPage.
public sealed partial class MainPage : Page
{
private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
- Creare un metodo che ottiene la Funzionalità
VideoEFfects
sottoscrive gli eventi:
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);
}
- Impostare uno sfondo personalizzato passando l'immagine attraverso un 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;
- Abilitare e disabilitare l'effetto Sostituzione sfondo:
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);
}
}
}
Passaggi successivi
Per altre informazioni, vedere gli articoli seguenti:
- Consultare l'esempio hero per le chiamate
- Introduzione alla libreria dell'interfaccia utente
- Informazioni sulle funzionalità di Calling SDK
- Leggere altre informazioni sul funzionamento delle chiamate