

# Nozioni di base sulla composizione lato server di IVS
<a name="ssc-getting-started"></a>

Questo documento illustra i passaggi necessari per iniziare a utilizzare la composizione lato server di IVS.

## Prerequisiti
<a name="ssc-getting-started-prerequisites"></a>

Per utilizzare la composizione lato server, è necessario disporre di una fase con publisher attivi e utilizzare un canale IVS e/o un bucket S3 come destinazione della composizione.

Per creare un bucket S3, consulta la documentazione di S3 su [come creare un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). Il bucket S3 deve essere creato nella stessa regione AWS dello stage IVS.

**Importante**: se utilizzi un bucket S3 esistente:
+ L'impostazione **Proprietà dell'oggetto** deve essere **Proprietario del bucket applicato** o **Proprietario del bucket preferito**.
+ In **Crittografia predefinita**, scegli **Crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)**.

Per i dettagli, consulta la documentazione di S3 sul [controllo della proprietà degli oggetti](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) e [protezione dei dati con la crittografia](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html).

## Istruzioni dell'API
<a name="ssc-getting-started-api-instructions"></a>

Di seguito, descriviamo un possibile flusso di lavoro che utilizza gli eventi EventBridge per avviare una composizione che trasmetta la fase su un canale IVS quando un partecipante pubblica. In alternativa, puoi avviare e interrompere le composizioni in base alla logica della tua applicazione. Consulta [Registrazione composita](rt-composite-recording.md) per un altro esempio che mostra l'uso della composizione lato server per registrare una fase direttamente in un bucket S3.

1. Crea un canale IVS. Consulta [Guida introduttiva allo streaming a bassa latenza di Amazon IVS](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started.html).

1. Crea una fase IVS e dei token per i partecipanti per ogni publisher.

1. Crea un [EncoderConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_EncoderConfiguration.html).

1. Unisciti alla fase e pubblica su di essa. (Consulta le sezioni "Pubblicazione e sottoscrizione" delle guide per l'SDK di trasmissione in streaming in tempo reale: [Web](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html) e [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html)).

1. Quando ricevi un evento EventBridge Partecipante pubblicato, chiama [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html) con la configurazione di layout desiderata.

1. Attendi qualche secondo e guarda la vista composita nella riproduzione del canale.

![\[Flusso di lavoro di composizione lato server che utilizza gli eventi EventBridge per avviare una composizione quando un partecipante pubblica.\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**Nota**: una composizione si spegne automaticamente dopo 60 secondi di inattività dei publisher che partecipano alla fase. A quel punto, la composizione è terminata e passa a uno stato `STOPPED`. Una composizione viene eliminata automaticamente dopo alcuni minuti nello stato `STOPPED`.

## Istruzioni per la CLI
<a name="ssc-getting-started-cli"></a>

L'uso di AWS CLI è un'opzione avanzata e richiede prima il download e la configurazione della CLI sul computer. Per maggiori dettagli, consultare la [Guida per l'utente dell'interfaccia a riga di comando di AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html).

Ora puoi usare la CLI per creare e gestire le risorse. Le operazioni della composizione si trovano nel namespace `ivs-realtime`.

### Creazione della risorsa EncoderConfiguration
<a name="ssc-getting-started-cli-create-encoderconfiguration"></a>

Un oggetto EncoderConfiguration consente di personalizzare il formato del video da generare (altezza, larghezza, bitrate e altri parametri di streaming). Puoi riutilizzare un EncoderConfiguration ogni volta che chiami l'operazione di composizione, come spiegato nel passaggio successivo.

Il comando seguente crea una risorsa EncoderConfiguration che configura i parametri di composizione video lato server (bitrate video, framerate e risoluzione):

```
aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"
```

La risposta è:

```
{
"encoderConfiguration": {
  "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4",
  "name": "MyEncoderConfig",
  "tags": {},
  "video": {
	 "bitrate": 2500000,
	 "framerate": 30,
	 "height": 720,
	 "width": 1280
    }
  }
}
```

### Inizio di una composizione
<a name="ssc-getting-started-cli-start-mediapublish"></a>

Utilizzando l'ARN di EncoderConfiguration fornito nella risposta precedente, crea la tua risorsa di composizione:

**Esempio di layout a griglia**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]' --layout '{"grid":{"participantOrderAttribute":"order","featuredParticipantAttribute":"isFeatured","videoFillMode":"COVER","gridGap":0}}'
```

**Esempio di layout PiP**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout '{"pip":{"participantOrderAttribute":"priority","pipParticipantAttribute":"isPip","pipOffset":10,"pipPosition":"TOP_RIGHT"}}'
```

**Nota**: è possibile utilizzare [questo strumento](https://composition.ivsdemos.com/) per generare più facilmente la configurazione `--layout` in base alle scelte di layout.

La risposta mostrerà che la composizione è stata creata con uno stato `STARTING`. Una volta che Composition inizia a pubblicare la composizione, lo stato passa a `ACTIVE`. (Puoi vedere lo stato chiamando l'operazione ListCompositions o GetComposition.)

Una volta che la composizione è `ACTIVE`, la vista composita della fase IVS sarà visibile sul canale IVS, tramite ListCompositions:

```
aws ivs-realtime list-compositions
```

La risposta è:

```
{
"compositions": [
  {
	 "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP",
	 "destinations": [
		{
		   "id": "bD9rRoN91fHU",
		   "startTime": "2023-09-21T15:38:39+00:00",
		   "state": "ACTIVE"
		}
	 ],
	 "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik",
	 "startTime": "2023-09-21T15:38:37+00:00",
	 "state": "ACTIVE",
	 "tags": {}
    }
  ]
}
```

**Nota**: per mantenere viva la composizione, è necessario che i publisher partecipanti pubblichino attivamente nella fase. Per ulteriori informazioni, consulta le sezioni "Pubblicazione e sottoscrizione" delle guide per l'SDK di trasmissione in streaming in tempo reale: [Web](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html), [Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html) e [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html). È necessario creare un token di fase distinto per ogni partecipante.