Guida introduttiva: Aggiungere effetti video alle videochiamate
È possibile usare la funzionalità Effetti video per aggiungere effetti al video nelle videochiamate. Questa funzionalità consente agli sviluppatori di creare effetti visivi di sfondo e sostituzione video in background nell'esperienza di chiamata. La sfocatura dello sfondo fornisce agli utenti il meccanismo per rimuovere le distrazioni dietro un partecipante in modo che i partecipanti possano comunicare senza attività di disturbo o informazioni riservate in background. Questo è particolarmente utile il contesto della telehealth, in cui un provider o un paziente potrebbe voler nascondere l'ambiente circostante per proteggere le informazioni sensibili o le informazioni personali. La sfocatura dello sfondo può essere applicata in tutti gli scenari di appuntamenti virtuali, tra cui telebanking e audizioni virtuali, per proteggere la privacy degli utenti. Oltre a una maggiore riservatezza, la sfocatura dello sfondo consente una maggiore creatività dell'espressione, consentendo agli utenti di caricare sfondi personalizzati per ospitare un'esperienza di chiamata più divertente e personalizzata.
Nota
La libreria degli effetti chiamanti non può essere usata in modalità autonoma e può funzionare solo se 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
Usare il npm install
comando per installare Servizi di comunicazione di Azure Effects SDK per JavaScript.
Importante
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 equil a 1.0.1
.
npm install @azure/communication-calling-effects --save
Vedere qui per altri dettagli sulla pagina del pacchetto npm degli effetti di comunicazione chiamante.
Nota
Attualmente il supporto del browser per la creazione di effetti di sfondo video è supportato solo in Chrome e Edge Desktop Browser (Windows e Mac) e Mac Safari Desktop.
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
della 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
È necessario specificare l'URL dell'immagine desiderata come sfondo a questo effetto.
Importante
Il startEffects
metodo avrà esito negativo se l'URL non è di un'immagine o non è raggiungibile o 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 eseguita passandola tramite il metodo configure:
const newBackgroundImage = 'https://linkToNewImageFile';
await backgroundReplacementEffect.configure({
backgroundImageUrl: newBackgroundImage
});
Gli effetti di commutazione possono essere eseguiti usando lo stesso metodo nell'API delle funzionalità effetti video:
// Switch to background blur
await videoEffectsFeatureApi.startEffects(backgroundBlurEffect);
// Switch to background replacement
await videoEffectsFeatureApi.startEffects(backgroundReplacementEffect);
In qualsiasi momento se si desidera controllare quali effetti sono attivi, è possibile utilizzare la activeEffects
proprietà .
La activeEffects
proprietà restituisce una matrice con i nomi degli effetti attivi correnti e restituisce una matrice vuota se non sono attivi effetti.
// Using the video effects feature api
const currentActiveEffects = videoEffectsFeatureApi.activeEffects;
Per interrompere gli effetti:
await videoEffectsFeatureApi.stopEffects();
Nota
Per usare Video Effects 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 al video nelle videochiamate. La sfocatura dello sfondo fornisce agli utenti il meccanismo per rimuovere le distrazioni dietro un partecipante in modo che i partecipanti possano comunicare senza attività di disturbo o informazioni riservate in background. Questa funzionalità è particolarmente utile per il contesto della telehealth, in cui un provider o un paziente potrebbe voler nascondere l'ambiente circostante per proteggere le informazioni riservate o i dati personali. La sfocatura dello sfondo può essere applicata in tutti gli scenari di appuntamenti virtuali, tra cui telebanking e audizioni virtuali, per proteggere la privacy degli utenti.
Uso degli effetti video
Nota
Il supporto degli effetti video su iOS è limitato alle due versioni principali più recenti di iOS. Ad esempio, quando viene rilasciata una nuova versione principale di iOS, il requisito di 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 sull'istanzaLocalVideoStream
di .disable
: disabilita un effetto video sull'istanzaLocalVideoStream
di .isSupported
: indica se un effetto video è supportato nell'istanzaLocalVideoStream
di .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 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 Gli effetti video con Azure Communication Calling SDK, dopo aver creato un LocalVideoStream
, è necessario ottenere l'API VideoEffects
di funzionalità di LocalVideoStream
per abilitare/disabilitare Gli 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 usare le API per abilitare e disabilitare Gli effetti video:
localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)
Sfocatura dello sfondo
Sfocatura sfondo è un effetto video che consente di sfocatura dello sfondo di una persona. Per usare l'effetto video in background, è necessario ottenere una LocalVideoEffectsFeature
funzionalità da un oggetto valido LocalVideoStream
.
- Creare un nuovo oggetto Effetto video sfocatura sfondo:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
- Controllare se
BackgroundBlurEffect
è supportato e chiamareEnable
l'oggettovideoEffectsFeature
:
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}
Per disabilitare l'effetto blur video di sfondo:
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)
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 al video nelle videochiamate. La sfocatura dello sfondo fornisce agli utenti il meccanismo per rimuovere le distrazioni dietro un partecipante in modo che i partecipanti possano comunicare senza attività di disturbo o informazioni riservate in background. Questa funzionalità è particolarmente utile per il contesto della telehealth, in cui un provider o un paziente potrebbe voler nascondere l'ambiente circostante per proteggere le informazioni riservate o i dati personali. La sfocatura dello sfondo può essere applicata in tutti gli scenari di appuntamenti virtuali, tra cui telebanking e audizioni virtuali, per proteggere la privacy degli utenti.
Questa guida introduttiva si basa su Avvio rapido: Aggiungere videochiamate 1:1 all'app per Android.
Uso degli effetti video
Nota
Il supporto degli effetti video in 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 la precedono.
Attualmente è disponibile un effetto video: sfocatura dello sfondo.
L'oggetto VideoEffectsLocalVideoStreamFeature
ha la struttura API seguente:
enableEffect
: abilita un effetto video sull'istanzaLocalVideoStream
di .disableEffect
: disabilita un effetto video sull'istanzaLocalVideoStream
di .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 effetto video ha esito negativo.
Gli VideoEffectEnabledEvent
oggetti , 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 Gli effetti video con Azure Communication Calling SDK, dopo aver creato un LocalVideoStream
, è necessario ottenere l'API VideoEffects
di funzionalità di LocalVideoStream
per abilitare/disabilitare Gli 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 usare le API per abilitare e disabilitare Gli effetti video:
videoEffectsFeature.enableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
videoEffectsFeature.disableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
Sfocatura dello sfondo
Sfocatura sfondo è un effetto video che consente di sfocatura dello sfondo di una persona. Per usare l'effetto video in background, è necessario ottenere una VideoEffectsLocalVideoStreamFeature
funzionalità da un oggetto valido LocalVideoStream
.
Per abilitare effetto blur video di sfondo:
- Creare un metodo che ottiene la
VideoEFfects
funzionalità sottoscrive gli eventi:
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);
}
- 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 blur video di sfondo:
public void disableBackgroundBlur() {
videoEffectsFeature.disableEffect(backgroundBlurEffect);
}
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 al video nelle videochiamate. Il blur in background fornisce agli utenti il meccanismo per rimuovere le distrazioni dietro un partecipante in modo che i partecipanti possano comunicare senza attività di disturbo o informazioni riservate in background. Questa funzionalità è particolarmente utile il contesto della telehealth, in cui un provider o un paziente potrebbe voler nascondere l'ambiente circostante per proteggere le informazioni sensibili o i dati personali. Il blur in background può essere applicato in tutti gli scenari di appuntamenti virtuali, tra cui telebanking e ascolti virtuali, per proteggere la privacy degli utenti.
Questa guida introduttiva si basa sulla guida introduttiva: Aggiungere 1:1 video chiamante all'app per Windows.
Uso di effetti video
Attualmente è disponibile un effetto video: blur di sfondo.
L'oggetto VideoEffectsLocalVideoStreamFeature
ha la struttura API seguente:
EnableEffect
: abilita un effetto video nell'istanzaLocalVideoStream
.DisableEffect
: disabilita un effetto video nell'istanzaLocalVideoStream
.VideoEffectEnabled
: evento attivato quando è stato abilitato correttamente un effetto video.VideoEffectDisabledListener
: evento attivato quando un effetto video è stato disabilitato correttamente.VideoEffectErrorListener
: evento attivato quando un'operazione di effetto video ha esito negativo.
Gli VideoEffectEnabledEvent
oggetti e VideoEffectErrorEvent
VideoEffectDisabledEvent
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 Video Effects con Azure Communication Calling SDK, aggiungere le variabili a MainPage.
public sealed partial class MainPage : Page
{
private LocalVideoEffectsFeature localVideoEffectsFeature;
}
Dopo aver creato un LocalVideoStream
oggetto , è necessario ottenere l'API VideoEffects
di funzionalità dell'oggetto LocalVideoStream
per abilitare/disabilitare Gli effetti video.
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;
e iniziare a usare le API per abilitare e disabilitare Gli effetti video:
videoEffectsLocalVideoStreamFeature.EnableEffect( {{VIDEO_EFFECT_TO_ENABLE}} );
videoEffectsLocalVideoStreamFeature.DisableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
Sfocatura dello sfondo
Blur di sfondo è un effetto video che consente la sfocatura dello sfondo di una persona. Per usare Effetto video in background, è necessario ottenere una VideoEffectsLocalVideoStreamFeature
funzionalità da un oggetto valido LocalVideoStream
.
Per abilitare l'effetto video blur in background:
- Aggiungere l'istanza
BackgroundBlurEffect
a MainPage.
public sealed partial class MainPage : Page
{
private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
- Creare un metodo che ottiene la sottoscrizione di
VideoEFfects
Feature agli 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 Blur in background:
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);
}
}
}
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à dell'SDK per chiamate
- Leggere altre informazioni sul funzionamento delle chiamate