Snabbstart: Lägga till videoeffekter i dina videosamtal
Du kan använda funktionen Videoeffekter för att lägga till effekter i videon i videosamtal. Med den här funktionen kan utvecklare skapa visuella bakgrundseffekter och ersätta bakgrundsvideor i samtalsupplevelsen. Bakgrundsoskärpa ger användarna mekanismen för att ta bort distraktioner bakom en deltagare så att deltagarna kan kommunicera utan störande aktivitet eller konfidentiell information i bakgrunden. Detta är särskilt användbart när det gäller telehälsa, där en leverantör eller patient kanske vill dölja sin omgivning för att skydda känslig information eller personligt identifierbar information. Bakgrundsoskärpa kan användas i alla scenarier med virtuella avtalade tider, inklusive telebankning och virtuella utfrågningar, för att skydda användarnas integritet. Förutom förbättrad konfidentialitet ger bakgrundsoskärpa mer kreativitet i uttryck, vilket gör det möjligt för användare att ladda upp anpassade bakgrunder för att vara värd för en roligare, personlig samtalsupplevelse.
Kommentar
Biblioteket för anropande effekt kan inte användas fristående och kan bara fungera när det används med Azure Communication Calling-klientbiblioteket för WebJS (https://www.npmjs.com/package/@azure/communication-calling).
Använda videoeffekter
Installera -paketet
Viktigt!
Bakgrundsoskärpa och bakgrundsersättning för webbläsare i Webbskrivbord är i tillgänglighet för allmän tillgänglighet. Den här snabbstarten använder Azure Communication Services Calling SDK-versionen av 1.13.1
(eller senare) och Azure Communication Services Calling Effects SDK-versionen som är större än eller lika med 1.0.1
. Stöd för skrivbordsläsare för att skapa bakgrundseffekter för video stöds för närvarande endast i Chrome och Edge Desktop Browser (Windows och Mac) och Mac Safari Desktop.
Kommentar
Bakgrundsoskärpa och bakgrundsersättning för Android Chrome och Android Edge mobile browser är tillgängliga i offentlig förhandsversion med början i version 1.29.1 och senare beta WebJS SDK-versioner.
npm install
Använd kommandot för att installera Azure Communication Services Effects SDK för JavaScript.
npm install @azure/communication-calling-effects --save
Mer information om NPM-paketsidan för samtalskommunikationseffekter finns här .
Kommentar
För närvarande finns det två tillgängliga videoeffekter:
- Bakgrundsoskärpa
- Bakgrundsbyte med en bild (proportionerna ska vara 16:9 för att vara kompatibla)
Om du vill använda videoeffekter med Azure Communication Calling SDK måste du, när du har skapat en LocalVideoStream
, hämta funktions-API:et LocalVideoStream
VideoEffects
för att starta/stoppa videoeffekterna:
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
});
Bakgrundsoskärpa
// 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);
}
Bakgrundsbyte med en bild
Du måste ange URL:en för den bild som du vill använda som bakgrund för den här effekten.
Viktigt!
Metoden startEffects
misslyckas om URL:en inte är av en bild eller är oåtkomlig/oläslig.
Kommentar
Aktuella bildformat som stöds är: png, jpg, jpeg, tiff, bmp.
Det aktuella proportioner som stöds är 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);
}
Du kan ändra avbildningen för den här effekten genom att skicka den via konfigurationsmetoden:
const newBackgroundImage = 'https://linkToNewImageFile';
await backgroundReplacementEffect.configure({
backgroundImageUrl: newBackgroundImage
});
Växlingseffekter kan göras med samma metod på funktions-API:et för videoeffekter:
// Switch to background blur
await videoEffectsFeatureApi.startEffects(backgroundBlurEffect);
// Switch to background replacement
await videoEffectsFeatureApi.startEffects(backgroundReplacementEffect);
När som helst om du vill kontrollera vilka effekter som är aktiva kan du använda egenskapen activeEffects
.
Egenskapen activeEffects
returnerar en matris med namnen på de aktuella aktiva effekterna och returnerar en tom matris om det inte finns några aktiva effekter.
// Using the video effects feature api
const currentActiveEffects = videoEffectsFeatureApi.activeEffects;
Så här stoppar du effekter:
await videoEffectsFeatureApi.stopEffects();
Kommentar
För att kunna använda videoeffekter på iOS Calling SDK laddas en maskininlärningsmodell ned till kundens enhet. Vi rekommenderar att du granskar sekretessanteckningarna i ditt program och uppdaterar dem i enlighet med detta, om det behövs.
Du kan använda funktionen Videoeffekter för att lägga till effekter i videon i videosamtal. Bakgrundsoskärpa ger användarna mekanismen för att ta bort distraktioner bakom en deltagare så att deltagarna kan kommunicera utan störande aktivitet eller konfidentiell information i bakgrunden. Den här funktionen är särskilt användbar när det gäller telehälsa, där en leverantör eller patient kanske vill dölja sin omgivning för att skydda känslig information eller personuppgifter. Bakgrundsoskärpa kan användas i alla scenarier med virtuella avtalade tider, inklusive telebankning och virtuella utfrågningar, för att skydda användarnas integritet.
Använda videoeffekter
Kommentar
Stöd för videoeffekter på iOS är begränsat till de två senaste huvudversionerna av iOS. När till exempel en ny huvudversion av iOS släpps är iOS-kravet den nya versionen och de senaste versionerna som föregick den.
För närvarande finns det en tillgänglig videoeffekt: Bakgrundsoskärpa.
Objektet LocalVideoEffectsFeature
har följande API-struktur:
enable
: Aktiverar en videoeffekt på instansenLocalVideoStream
.disable
: Inaktiverar en videoeffekt på instansenLocalVideoStream
.isSupported
: Anger om en videoeffekt stöds på instansenLocalVideoStream
.onVideoEffectEnabled
: Händelse som utlöses när en videoeffekt har aktiverats.onVideoEffectDisabled
: Händelse som utlöses när en videoeffekt har inaktiverats.onVideoEffectError
: Händelse som utlöses när en videoeffektåtgärd misslyckas.
När du har LocalVideoEffectsFeature
objektet kan du prenumerera på händelserna, händelser har följande ombud: didEnableVideoEffect
, didDisableVideoEffect
, didReceiveVideoEffectError
.
Om du vill använda videoeffekter med Azure Communication Calling SDK måste du, när du har skapat en LocalVideoStream
, hämta funktions-API:et LocalVideoStream
VideoEffects
för för att aktivera/inaktivera videoeffekter:
// 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)
}
och börja använda API:erna för att aktivera och inaktivera videoeffekter:
localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)
Bakgrundsoskärpa
Bakgrundsoskärpa är en videoeffekt som gör att en persons bakgrund kan suddas ut. För att kunna använda Background Video Effect måste du hämta en LocalVideoEffectsFeature
funktion från en giltig LocalVideoStream
.
- Skapa ett nytt videoeffektobjekt för bakgrundsoskärpa:
@State var backgroundBlurVideoEffect: BackgroundBlurEffect?
- Kontrollera om
BackgroundBlurEffect
stöds och anropaEnable
objektetvideoEffectsFeature
:
if((localVideoEffectsFeature.isSupported(effect: backgroundBlurVideoEffect)) != nil)
{
localVideoEffectsFeature.enable(effect: backgroundBlurVideoEffect)
}
Så här inaktiverar du videoeffekt för bakgrundsoskärpa:
localVideoEffectsFeature.disable(effect: backgroundBlurVideoEffect)
Ersättning av bakgrund
Bakgrundsersättning är en videoeffekt som gör att en person kan ange sin egen anpassade bakgrund. För att kunna använda Background Replacement Effect måste du hämta en LocalVideoEffectsFeature
funktion från en giltig LocalVideoStream
.
- Skapa ett nytt videoeffektobjekt för bakgrundsersättning:
@State var backgroundReplacementVideoEffect: BackgroundReplacementEffect?
- Ange en anpassad bakgrund genom att skicka in bilden via en buffert.
let image = UIImage(named:"image.png")
guard let imageData = image?.jpegData(compressionQuality: 1.0) else {
return
}
backgroundReplacementVideoEffect.buffer = imageData
- Kontrollera om
BackgroundReplacementEffect
stöds och anropaEnable
objektetvideoEffectsFeature
:
if((localVideoEffectsFeature.isSupported(effect: backgroundReplacementVideoEffect)) != nil)
{
localVideoEffectsFeature.enable(effect: backgroundReplacementVideoEffect)
}
Så här inaktiverar du videoeffekt för bakgrundsersättning:
localVideoEffectsFeature.disable(effect: backgroundReplacementVideoEffect)
Kommentar
För att kunna använda videoeffekter på Android Calling SDK laddas en maskininlärningsmodell ned till kundens enhet. Vi rekommenderar att du granskar sekretessanteckningarna i ditt program och uppdaterar dem i enlighet med detta, om det behövs.
Du kan använda funktionen Videoeffekter för att lägga till effekter i videon i videosamtal. Bakgrundsoskärpa ger användarna mekanismen för att ta bort distraktioner bakom en deltagare så att deltagarna kan kommunicera utan störande aktivitet eller konfidentiell information i bakgrunden. Den här funktionen är särskilt användbar när det gäller telehälsa, där en leverantör eller patient kanske vill dölja sin omgivning för att skydda känslig information eller personuppgifter. Bakgrundsoskärpa kan användas i alla scenarier med virtuella avtalade tider, inklusive telebankning och virtuella utfrågningar, för att skydda användarnas integritet.
Den här snabbstarten bygger på snabbstart: Lägg till 1:1-videosamtal i din app för Android.
Använda videoeffekter
Kommentar
Stöd för videoeffekter på Android är begränsat till de fyra senaste huvudversionerna av Android. När till exempel en ny huvudversion av Android släpps är Android-kravet den nya versionen och de tre senaste versionerna som föregår den.
För närvarande finns det en tillgänglig videoeffekt: Bakgrundsoskärpa.
Objektet VideoEffectsLocalVideoStreamFeature
har följande API-struktur:
enableEffect
: Aktiverar en videoeffekt på instansenLocalVideoStream
.disableEffect
: Inaktiverar en videoeffekt på instansenLocalVideoStream
.OnVideoEffectEnabledListener
: Händelse som utlöses när en videoeffekt har aktiverats.OnVideoEffectDisabledListener
: Händelse som utlöses när en videoeffekt har inaktiverats.OnVideoEffectErrorListener
: Händelse som utlöses när en videoeffektåtgärd misslyckas.
Objekten VideoEffectEnabledEvent
och VideoEffectErrorEvent
VideoEffectDisabledEvent
har följande API-struktur:
getVideoEffectName
: Hämtar namnet på videoeffekten som utlöste händelsen.
När du har VideoEffectsLocalVideoStreamFeature
objektet kan du prenumerera på händelserna:
Om du vill använda videoeffekter med Azure Communication Calling SDK måste du, när du har skapat en LocalVideoStream
, hämta funktions-API:et LocalVideoStream
VideoEffects
för för att aktivera/inaktivera videoeffekter:
// 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);
och börja använda API:erna för att aktivera och inaktivera videoeffekter:
videoEffectsFeature.enableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
videoEffectsFeature.disableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
Bakgrundsoskärpa
Bakgrundsoskärpa är en videoeffekt som gör att en persons bakgrund kan suddas ut. För att kunna använda Background Video Effect måste du hämta en VideoEffectsLocalVideoStreamFeature
funktion från en giltig LocalVideoStream
.
Så här aktiverar du Videoeffekt för bakgrundsoskärpa:
- Skapa en metod som hämtar funktionen
VideoEFfects
prenumererar på händelserna:
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);
}
- Skapa ett nytt videoeffektobjekt för bakgrundsoskärpa:
BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
- Anropa
EnableEffect
objektetvideoEffectsFeature
:
public void enableBackgroundBlur() {
videoEffectsFeature.enableEffect(backgroundBlurEffect);
}
Så här inaktiverar du videoeffekt för bakgrundsoskärpa:
public void disableBackgroundBlur() {
videoEffectsFeature.disableEffect(backgroundBlurEffect);
}
Ersättning av bakgrund
Bakgrundsersättning är en videoeffekt som gör att en persons bakgrund kan ersättas. För att kunna använda Background Video Effect måste du hämta en VideoEffectsLocalVideoStreamFeature
funktion från en giltig LocalVideoStream
.
Så här aktiverar du videoeffekt för bakgrundsersättning:
- Skapa en metod som hämtar funktionen
VideoEFfects
prenumererar på händelserna:
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);
}
- Skapa ett nytt videoeffektobjekt för bakgrundsersättning:
BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
- Ange en anpassad bakgrund genom att skicka in bilden via en buffert.
//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);
- Anropa
EnableEffect
objektetvideoEffectsFeature
:
public void enableBackgroundReplacement() {
videoEffectsFeature.enableEffect(backgroundReplacementVideoEffect);
}
Så här inaktiverar du videoeffekt för bakgrundsersättning:
public void disableBackgroundReplacement() {
videoEffectsFeature.disableEffect(backgroundReplacementVideoEffect);
}
Kommentar
För att kunna använda videoeffekter på Windows Calling SDK laddas en maskininlärningsmodell ned till kundens enhet. Vi rekommenderar att du granskar sekretessanteckningarna i ditt program och uppdaterar dem i enlighet med detta, om det behövs.
Du kan använda funktionen Videoeffekter för att lägga till effekter i videon i videosamtal. Bakgrundsoskärpa ger användarna mekanismen för att ta bort distraktioner bakom en deltagare så att deltagarna kan kommunicera utan störande aktivitet eller konfidentiell information i bakgrunden. Den här funktionen är särskilt användbar när det gäller telehälsa, där en leverantör eller patient kanske vill dölja sin omgivning för att skydda känslig information eller personuppgifter. Bakgrundsoskärpa kan användas i alla scenarier med virtuella avtalade tider, inklusive telebankning och virtuella utfrågningar, för att skydda användarnas integritet.
Den här snabbstarten bygger på snabbstart: Lägg till 1:1-videosamtal i din app för Windows.
Använda videoeffekter
För närvarande finns det en tillgänglig videoeffekt: Bakgrundsoskärpa.
Objektet VideoEffectsLocalVideoStreamFeature
har följande API-struktur:
EnableEffect
: Aktiverar en videoeffekt på instansenLocalVideoStream
.DisableEffect
: Inaktiverar en videoeffekt på instansenLocalVideoStream
.VideoEffectEnabled
: Händelse som utlöses när en videoeffekt har aktiverats.VideoEffectDisabledListener
: Händelse som utlöses när en videoeffekt har inaktiverats.VideoEffectErrorListener
: Händelse som utlöses när en videoeffektåtgärd misslyckas.
Objekten VideoEffectEnabledEvent
och VideoEffectErrorEvent
VideoEffectDisabledEvent
har följande API-struktur:
VideoEffectName
: Hämtar namnet på videoeffekten som utlöste händelsen.
När du har VideoEffectsLocalVideoStreamFeature
objektet kan du prenumerera på händelserna:
Om du vill använda videoeffekter med Azure Communication Calling SDK lägger du till variablerna i MainPage.
public sealed partial class MainPage : Page
{
private LocalVideoEffectsFeature localVideoEffectsFeature;
}
När du har skapat en LocalVideoStream
måste du hämta VideoEffects
funktions-API:et LocalVideoStream
för för att aktivera/inaktivera videoeffekter.
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;
och börja använda API:erna för att aktivera och inaktivera videoeffekter:
videoEffectsLocalVideoStreamFeature.EnableEffect( {{VIDEO_EFFECT_TO_ENABLE}} );
videoEffectsLocalVideoStreamFeature.DisableEffect( {{VIDEO_EFFECT_TO_DISABLE}} );
Bakgrundsoskärpa
Bakgrundsoskärpa är en videoeffekt som gör att en persons bakgrund kan suddas ut. För att kunna använda Background Video Effect måste du hämta en VideoEffectsLocalVideoStreamFeature
funktion från en giltig LocalVideoStream
.
Så här aktiverar du Videoeffekt för bakgrundsoskärpa:
- Lägg till instansen
BackgroundBlurEffect
i MainPage.
public sealed partial class MainPage : Page
{
private BackgroundBlurEffect backgroundBlurVideoEffect = new BackgroundBlurEffect();
}
- Skapa en metod som hämtar funktionen
VideoEFfects
prenumererar på händelserna:
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);
}
- Aktivera och inaktivera background blur-effekten:
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);
}
}
}
Ersättning av bakgrund
Bakgrundsersättning är en videoeffekt som gör att en persons bakgrund kan ersättas. För att kunna använda Background Video Effect måste du hämta en VideoEffectsLocalVideoStreamFeature
funktion från en giltig LocalVideoStream
.
Så här aktiverar du videoeffekt för bakgrundsersättning:
- Lägg till instansen
BackgroundReplacementEffect
i MainPage.
public sealed partial class MainPage : Page
{
private BackgroundReplacementEffect backgroundReplacementVideoEffect = new BackgroundReplacementEffect();
}
- Skapa en metod som hämtar funktionen
VideoEFfects
prenumererar på händelserna:
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);
}
- Ange en anpassad bakgrund genom att skicka in bilden via en buffert.
//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;
- Aktivera och inaktivera bakgrundsersättningseffekten:
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);
}
}
}
Nästa steg
Mer information finns i följande artiklar:
- Kolla in vårt exempel på anropande hjälte
- Kom igång med UI-bibliotek
- Lär dig mer om funktioner för samtals-SDK
- Läs mer om hur samtal fungerar