

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Aggiungere filtri in background alla tua applicazione per l'SDK Amazon Chime
<a name="add-filters"></a>

Il processo di aggiunta dei filtri di sfondo segue questi passaggi generali:
+ Verifica i browser supportati.
+ Crea un `VideoFxConfig` oggetto con la configurazione che desideri utilizzare.
+ Utilizzate l'oggetto di configurazione per creare un `VideoFxProcessor` oggetto.
+ Includi l'`VideoFxProcessor`oggetto in un`VideoTransformDevice`.
+ Utilizzate il `VideoTransformDevice` per avviare l'ingresso video.

**Nota**  
Per completare questi passaggi, devi prima:  
Creare un `Logger`.
Scegli un dispositivo video di classe`MediaDeviceInfo`.
Partecipa con successo a`MeetingSession`.

I passaggi nelle sezioni seguenti spiegano come completare il processo.

**Topics**
+ [Verifica del supporto prima di offrire un filtro per l'SDK Amazon Chime](support-check.md)
+ [Creazione di un VideoFxConfig oggetto per l'SDK Amazon Chime](create-videofxconfig.md)
+ [Creazione di un VideoFxProcessor oggetto per l'SDK Amazon Chime](create-videofxprocessor.md)
+ [Configurazione dell'VideoFxProcessoroggetto per l'SDK Amazon Chime](configure-videofxprocessor.md)
+ [Creazione dell'VideoTransformDeviceoggetto per l'SDK Amazon Chime](create-video-transform.md)
+ [Avvio dell'input video per l'SDK Amazon Chime](start-video-input.md)
+ [Ottimizzazione dell'utilizzo delle risorse per l'SDK Amazon Chime](tuning.md)

# Verifica del supporto prima di offrire un filtro per l'SDK Amazon Chime
<a name="support-check"></a>

L'SDK Amazon Chime fornisce un metodo statico asincrono che verifica i browser supportati e tenta di scaricare le risorse richieste. Tuttavia, non verifica le prestazioni del dispositivo. Come procedura ottimale, assicurati sempre che i browser e i dispositivi degli utenti siano in grado di supportare i filtri prima di offrire i filtri.

```
import {
    VideoFxProcessor
} from 'amazon-chime-sdk-js';

if (!await VideoFxProcessor.isSupported(logger)) {     
    // logger is optional for isSupported
}
```

# Creazione di un VideoFxConfig oggetto per l'SDK Amazon Chime
<a name="create-videofxconfig"></a>

È possibile definire configurazioni per `backgroundBlur` e `backgroundReplacement` nello stesso oggetto. Tuttavia, non è possibile `isEnabled` impostare l'`true`opzione per entrambi i filtri contemporaneamente. Questa è una configurazione non valida.

La `VideoFxConfig` classe non esegue alcuna convalida propria. La convalida avviene nella fase successiva.

L'esempio seguente mostra un valore valido`VideoFxConfig`.

```
const videoFxConfig: VideoFxConfig = {
    backgroundBlur: {
        isEnabled: false,
        strength: 'medium'
    },
    backgroundReplacement: {
        isEnabled: false,
        backgroundImageURL: 'space.jpg',
        defaultColor: undefined,
    }
}
```

Nelle tabelle seguenti sono elencate le `VideoFxProcessor` proprietà che è possibile specificare nell'`VideoFxConfig`oggetto.

**Proprietà del filtro per la sfocatura dello sfondo**


| Proprietà | Tipo | Description | 
| --- | --- | --- | 
| `isEnabled` | `boolean` |  Quando`true`, il filtro offusca lo sfondo. | 
| `strength` | `string` | Determina l'entità della sfocatura. Valori validi: `low` \$1 `medium` \$1 `high`. | 

**Proprietà del filtro di sostituzione dello sfondo**


| Proprietà | Tipo | Description | 
| --- | --- | --- | 
| `isEnabled` | `boolean` |  Quando`true`, il filtro sostituisce lo sfondo\$1. | 
| `backgroundImageURL` | `string` | L'URL dell'immagine di sfondo. Il filtro ridimensiona l'immagine dinamicamente in base alle dimensioni della schermata corrente. È possibile utilizzare una stringa come `https://...` o un URL di dati come. `data:image/jpeg;base64` | 
| `defaultColor` | `string` | Una stringa di colore esadecimale come `000000` o `FFFFFF` oppure una stringa come `black` o`white`. Se non si specifica l'URL di un'immagine, il processore lo utilizza `defaultColor` come sfondo. Se non si specifica a`defaultColor`, per impostazione predefinita il processore è nero. | 

# Creazione di un VideoFxProcessor oggetto per l'SDK Amazon Chime
<a name="create-videofxprocessor"></a>

Durante la creazione dell'`VideoFxProcessor`oggetto, AWS i server scaricano le risorse di runtime oppure una cache del browser carica le risorse. Se le configurazioni di rete o CSP impediscono l'accesso alle risorse, l'`VideoFx.create`operazione genera un'eccezione. Il risultato VideoFxProcessor è configurato come un processore no-op, che non influirà sul flusso video.

```
let videoFxProcessor: VideoFxProcessor | undefined = undefined;
try {
  videoFxProcessor = await VideoFxProcessor.create(logger, videoFxConfig);
} catch (error) {
  logger.warn(error.toString());
}
```

`VideoFxProcessor.create`tenta anche di caricare l'immagine da`backgroundReplacement.backgroundImageURL`. Se l'immagine non viene caricata, il processore genera un'eccezione. Il processore genera eccezioni anche per altri motivi, ad esempio configurazioni non valide, browser non supportati o hardware sottodimensionato. 

# Configurazione dell'VideoFxProcessoroggetto per l'SDK Amazon Chime
<a name="configure-videofxprocessor"></a>

Nelle tabelle seguenti sono elencate le `VideoFxProcessor` proprietà che è possibile configurare. L'esempio sotto le tabelle mostra una tipica configurazione di runtime.

**Sfocatura dello sfondo**  
La sfocatura dello sfondo assume le seguenti proprietà:


| Proprietà | Tipo | Description | 
| --- | --- | --- | 
| `isEnabled` | `boolean` | Quando`true`, il filtro offusca lo sfondo. | 
| `strength` | `string` | Determina l'entità della sfocatura. Valori validi: `low` \$1 `medium` \$1 `high`. | 

**Sostituzione dello sfondo**  
La sostituzione dello sfondo richiede i seguenti parametri:


| Proprietà | Tipo | Description | 
| --- | --- | --- | 
| `isEnabled` | `boolean` | Quando`true`, il filtro sostituisce lo sfondo. | 
| `backgroundImageURL` | `string` | L'URL dell'immagine di sfondo. Il filtro ridimensiona l'immagine dinamicamente in base alle dimensioni della schermata corrente. È possibile utilizzare una stringa come `https://...` o un URL di dati come. `data:image/jpeg;base64` | 
| `defaultColor` | `string` | Una stringa di colore esadecimale come `000000` o `FFFFFF` oppure una stringa come `black` o`white`. Se non si specifica l'URL di un'immagine, il processore lo utilizza `defaultColor` come sfondo. Se non si specifica a, per impostazione predefinita `defaultColor` il processore è nero. | 

**Modifica di una configurazione in fase di esecuzione**  
È possibile modificare una `VideoFxProcessor` configurazione in fase di esecuzione utilizzando il `videoFxProcessor.setEffectConfig` parametro. L'esempio seguente mostra come abilitare la sostituzione dello sfondo e disabilitare la sfocatura dello sfondo.

**Nota**  
È possibile specificare un solo tipo di sostituzione dello sfondo alla volta. Specificate un valore per `backgroundImageURL` o`defaultColor`, ma non per entrambi.

```
videoFxConfig.backgroundBlur.isEnabled = false;
videoFxConfig.backgroundReplacement.isEnabled = true;
try {
  await videoFxProcessor.setEffectConfig(videoFxConfig);
} catch(error) {
  logger.error(error.toString())
}
```

Se `setEffectConfig` genera un'eccezione, la configurazione precedente rimane valida. `setEffectConfig`genera eccezioni in condizioni simili a quelle che causano `VideoFxProcessor.create` la generazione di eccezioni.

L'esempio seguente mostra come modificare un'immagine di sfondo durante l'esecuzione del video.

```
videoFxConfig.backgroundReplacement.backgroundImageURL = "https://my-domain.com/my-other-image.jpg";
try {
  await videoFxProcessor.setEffectConfig(videoFxConfig);
} catch(error) {
  logger.error(error.toString())
}
```

# Creazione dell'VideoTransformDeviceoggetto per l'SDK Amazon Chime
<a name="create-video-transform"></a>

L'esempio seguente mostra come creare un `VideoTransformDevice` oggetto che contiene il`VideoFxProcessor`.

```
// assuming that logger and videoInputDevice have already been set    
const videoTransformDevice = new DefaultVideoTransformDevice(
  logger,
  videoInputDevice,
  [videoFxProcessor]
);
```

# Avvio dell'input video per l'SDK Amazon Chime
<a name="start-video-input"></a>

L'esempio seguente mostra come utilizzare l'`VideoTransformDevice`oggetto per avviare l'input video. 

```
// assuming that meetingSession has already been created
await meetingSession.audioVideo.startVideoInput(videoTransformDevice);
meetingSession.audioVideo.start();
meetingSession.audioVideo.startLocalVideoTile();
```

# Ottimizzazione dell'utilizzo delle risorse per l'SDK Amazon Chime
<a name="tuning"></a>

Durante la creazione di`VideoFxProcessor`, puoi fornire il `processingBudgetPerFrame` parametro opzionale e controllare la quantità di CPU e GPU utilizzata dai filtri.

```
let videoFxProcessor: VideoFxProcessor | undefined = undefined;
const processingBudgetPerFrame = 50;
try {
  videoFxProcessor = await VideoFxProcessor.create(logger, videoFxConfig, processingBudgetPerFrame);
} catch (error) {
  logger.warn(error.toString());
}
```

L'elaborazione di un frame `VideoFxProcessor` richiede tempo. La quantità di tempo dipende dal dispositivo, dal browser e da cos'altro è in esecuzione nel browser o sul dispositivo. Il processore utilizza il concetto di *budget* per determinare la quantità di tempo impiegata per elaborare e renderizzare ciascun fotogramma.

Il tempo di elaborazione è in millisecondi. Come esempio di utilizzo di un budget, 1 secondo equivale a 1000 ms. L'acquisizione video a 15 fotogrammi al secondo comporta un budget totale di 1000 ms/15 fps = 66 ms. È possibile impostare un budget pari al 50% di tale importo, ovvero 33 ms, fornendo il valore del parametro, come illustrato `50` nell'`processingBudgetPerFrame`esempio precedente.

`VideoFxProcessor`Quindi tenta di elaborare i frame entro il budget specificato. Se l'elaborazione supera il budget, il processore riduce la qualità visiva per rispettare il budget. Il processore continua a ridurre al minimo la qualità visiva, dopodiché smette di ridurla. Questa durata di elaborazione viene misurata continuamente, quindi se diventano disponibili più risorse, ad esempio se un'altra app chiude e libera la CPU, il processore aumenta nuovamente la qualità visiva fino a raggiungere il budget o viene raggiunta la massima qualità visiva.

Se non fornisci un valore a`processingBudgetPerFrame`, il valore predefinito è`VideoFxProcessor`. `50`