

# Registrazione di singoli partecipanti in IVS \$1 Streaming in tempo reale
<a name="rt-individual-participant-recording"></a>

Questo documento spiega come utilizzare la registrazione dei singoli partecipanti con lo streaming IVS in tempo reale.

Si applicano i costi standard di archiviazione e richiesta di Amazon S3. Le miniature non comportano costi IVS aggiuntivi. Per ulteriori dettagli, consulta la pagina [Prezzi di Amazon IVS](https://aws.amazon.com/ivs/pricing/).

## Introduzione
<a name="ind-part-rec-introduction"></a>

La registrazione di singoli partecipanti consente ai clienti che utilizzano lo streaming in tempo reale di registrare singolarmente i publisher di fase IVS in bucket S3. Quando la registrazione dei singoli partecipanti è abilitata per una fase, una volta che i publisher iniziano a pubblicare sulla fase i rispettivi contenuti vengono registrati.

**Nota:** se è necessario che tutti i partecipanti alla fase vengano mixati in un unico video, la soluzione migliore è la funzionalità di registrazione composita. Consulta la sezione [Registrazione](rt-recording.md) per un riepilogo della registrazione di contenuti in streaming in tempo reale in IVS.

![\[Registrazione dei contenuti multimediali di ciascun publisher in un file separato utilizzando la registrazione dei singoli partecipanti.\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/images/Individual_Participant_Recording.png)


## Flusso di lavoro
<a name="ind-part-rec-workflow"></a>

![\[Flusso di lavoro di registrazione dei contenuti multimediali di ciascun publisher in un file separato utilizzando la registrazione dei singoli partecipanti.\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/images/Workflow_Participant_Recording.png)


### 1. Creare un bucket S3
<a name="ind-part-rec-create-s3-bucket"></a>

Per la scrittura dei VOD occorre un bucket S3. Per i dettagli, consulta la documentazione di S3 su [come creare un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html). Occorre tenere presente che per la registrazione dei singoli partecipanti i bucket S3 devono essere creati nella stessa regione AWS della fase 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).

### 2. Creazione di un oggetto StorageConfiguration
<a name="ind-part-rec-create-storageconfig-object"></a>

Dopo aver creato un bucket, chiama l'API di streaming in tempo reale IVS per creare un oggetto [StorageConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_CreateStorageConfiguration.html). Una volta creata correttamente la configurazione di archiviazione, IVS disporrà dell'autorizzazione a scrivere nel bucket S3 fornito. È possibile riutilizzare questo oggetto StorageConfiguration in più fasi.

### 3. Creazione di una fase con i token dei partecipanti
<a name="ind-part-rec-create-stage-with-part-tokens"></a>

Ora è necessario [creare una fase IVS](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_CreateStage.html) con la registrazione dei singoli partecipanti abilitata (impostando l'oggetto AutoParticipantRecordingConfiguration), oltre ai token dei partecipanti per ogni publisher.

La richiesta seguente crea una fase con due token dei partecipanti e la registrazione dei singoli partecipanti abilitata.

```
POST /CreateStage HTTP/1.1
Content-type: application/json

{
   "autoParticipantRecordingConfiguration": { 
      "mediaTypes": ["AUDIO_VIDEO"],
      "storageConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:storage-configuration/AbCdef1G2hij",
      "thumbnailConfiguration": {
         "recordingMode": "INTERVAL",
         "storage": ["LATEST", "SEQUENTIAL"],
         "targetIntervalSeconds": 60
      }
   },
   "name": "TestStage",
   "participantTokenConfigurations": [ 
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "1"
      },
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "2"
      }
   ]
}
```

### 4. Aggiunta alla fase come publisher attivo
<a name="ind-part-rec-join-stage-as-active-pub"></a>

Distribuisci i token dei partecipanti ai publisher e invitali ad aggiungersi alla fase e iniziare a [pubblicare su di essa](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/getting-started-pub-sub.html).

Quando si aggiungono alla fase e iniziano a pubblicare su di essa utilizzando uno degli [SDK di trasmissione in streaming in tempo reale IVS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/broadcast.html), il processo di registrazione dei partecipanti si avvia automaticamente e ti invia un [evento EventBridge](eventbridge.md) che segnala l'inizio della registrazione. L'evento è Modifica dello stato di registrazione dei partecipanti IVS - Avvio della registrazione. Contemporaneamente, il processo di registrazione dei partecipanti inizia a scrivere i file VOD e di metadati nel bucket S3 configurato. Nota: non è garantita la registrazione dei partecipanti collegati per periodi estremamente brevi (meno di 5 secondi).

Esistono due modi per ottenere il prefisso S3 per ogni registrazione:
+ Ascoltare l'evento EventBridge:

  ```
  {
     "version": "0",
     "id": "12345678-1a23-4567-a1bc-1a2b34567890",
     "detail-type": "IVS Participant Recording State Change",
     "source": "aws.ivs",
     "account": "123456789012",
     "time": "2024-03-13T22:19:04Z",
     "region": "us-east-1",
     "resources": ["arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"],
     "detail": {
        "session_id": "st-ZyXwvu1T2s",
        "event_name": "Recording Start",
        "participant_id": "xYz1c2d3e4f",
        "recording_s3_bucket_name": "ivs-recordings",
        "recording_s3_key_prefix": "<stage_id>/<session_id>/<participant_id>/2024-01-01T12-00-55Z"
     }
  }
  ```
+ Usa l'operazione dell'API [GetParticipant](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_GetParticipant.html): la risposta include il bucket S3 e il prefisso in cui è in corso la registrazione di un partecipante. Ecco la richiesta:

  ```
  POST /GetParticipant HTTP/1.1
  Content-type: application/json
  {
     "participantID": "xYz1c2d3e4f",
     "sessionId": "st-ZyXwvu1T2s",
     "stageArn": "arn:aws:ivs:us-west-2:123456789012:stage/AbCdef1G2hij"
  }
  ```

  Ed ecco la risposta:

  ```
  Content-type: application/json
  {
     "participant": {
        ...
        "recordingS3BucketName": "ivs-recordings",
        "recordingS3Prefix": "<stage_id>/<session_id>/<participant_id>",
        "recordingState": "ACTIVE",
        ...
     }
  }
  ```

### 5. Riproduzione del VOD
<a name="ind-part-rec-play-back-vod"></a>

Una volta completata la registrazione, è possibile guardarla utilizzando il [lettore IVS](https://debug.ivsdemos.com/?p=ivs). Consulta la sezione [Riproduzione di contenuti registrati da bucket privati](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/rt-composite-recording.html#comp-rec-playback) per istruzioni sulla configurazione delle distribuzioni CloudFront per la riproduzione del VOD.

## Registrazione solo audio
<a name="ind-part-rec-audio-only-recordings"></a>

Quando si configura la registrazione dei singoli partecipanti, è possibile scegliere di scrivere nel bucket S3 soltanto i segmenti audio HLS. Per utilizzare questa funzione, scegli `AUDIO_ONLY mediaType` quando crei la fase:

```
POST /CreateStage HTTP/1.1
Content-type: application/json

{
   "autoParticipantRecordingConfiguration": { 
      "storageConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:storage-configuration/AbCdef1G2hij",
      "mediaTypes": ["AUDIO_ONLY"],
      "thumbnailConfiguration": {
         "recordingMode": "DISABLED"
      }
   },
   "name": "TestStage",
   "participantTokenConfigurations": [ 
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "1"
      },
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "2"
      }
   ]
}
```

## Registrazione solo miniatura
<a name="ind-part-rec-recording-thumbnail-only"></a>

Quando si configura la registrazione dei singoli partecipanti, è possibile scegliere di scrivere nel bucket S3 soltanto le miniature. Per utilizzare questa funzionalità, imposta `mediaType` a `NONE` quando crei la fase. Ciò garantisce che non vengano generati segmenti HLS; le miniature vengono comunque create e scritte nel bucket S3.

```
POST /CreateStage HTTP/1.1
Content-type: application/json
{
   "autoParticipantRecordingConfiguration": { 
      "storageConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:storage-configuration/AbCdef1G2hij",
      "mediaTypes": ["NONE"],
      "thumbnailConfiguration": {
         "recordingMode": "INTERVAL",
         "storage": ["LATEST", "SEQUENTIAL"],
         "targetIntervalSeconds": 60
      }
   },
   "name": "TestStage",
   "participantTokenConfigurations": [ 
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "1"
      },
      { 
         "capabilities": ["PUBLISH", "SUBSCRIBE"],
         "duration": 20160,
         "userId": "2"
      }
   ]
}
```

## Contenuto della registrazione
<a name="ind-part-rec-recording-contents"></a>

Quando la registrazione dei singoli partecipanti è attiva, i segmenti video, i file di metadati e le miniature HLS verranno scritti nel bucket S3 indicato durante la creazione della fase. Questo contenuto è disponibile per la post-elaborazione o la riproduzione come video on demand.

Si noti che dopo il completamento di una registrazione, tramite EventBridge viene inviato un evento Modifica dello stato di registrazione dei partecipanti IVS - Fine della registrazione. Consigliamo di riprodurre o elaborare i flussi registrati solo dopo l'invio dell'evento di fine della registrazione. Per maggiori dettagli, consulta [Utilizzo di EventBridge con lo streaming in tempo reale IVS](eventbridge.md).

Di seguito è riportato un esempio di contenuti e della struttura di directory di una registrazione di una sessione IVS live:

```
s3://mybucket/stageId/stageSessionId/participantId/timestamp
   events
      recording-started.json
      recording-ended.json
   media
      hls
	 multivariant.m3u8
         high
            playlist.m3u8
            1.mp4
      thumbnails
         high
            1.jpg
            2.jpg
      latest_thumbnail
         high
            thumb.jpg
```

La cartella `events` contiene i file di metadati corrispondenti all'evento di registrazione. I file di metadati JSON vengono generati quando la registrazione inizia, termina correttamente o termina con errori:
+ `events/recording-started.json`
+ `events/recording-ended.json`
+ `events/recording-failed.json`

Una determinata cartella `events` contiene `recording-started.json` e `recording-ended.json` o `recording-failed.json`. Questi contengono metadati relativi alla sessione registrata e ai relativi formati di output. I dettagli JSON sono riportati di seguito.

La cartella `media` contiene i contenuti multimediali supportati. La sottocartella `hls` contiene tutti i file multimediali e i file manifesto generati durante la sessione di registrazione ed è riproducibile con il lettore IVS. Se configurate, le sottocartelle `thumbnails` e `latest_thumbnail` contengono file multimediali in miniatura JPEG generati durante la sessione di composizione.

## Unire le registrazioni frammentate dei singoli partecipanti
<a name="ind-part-rec-merge-frag"></a>

La proprietà `recordingReconnectWindowSeconds` su una configurazione di registrazione consente di specificare un intervallo di tempo (in secondi) durante il quale, se un publisher di fase si disconnette da una fase e poi si riconnette, IVS tenta di registrare con lo stesso prefisso S3 della sessione precedente. In altre parole, se un publisher si disconnette e riconnette entro l'intervallo specificato, le registrazioni multiple vengono considerate un'unica registrazione e unite insieme.

Se la registrazione delle anteprime è abilitata in modalità `SEQUENTIAL`, anche le anteprime vengono unite nello stesso `recordingS3Prefix`. Quando le registrazioni vengono unite, il contatore delle anteprime riparte dal valore di anteprima precedente scritto per la registrazione precedente.

**Eventi di modifica dello stato di registrazione IVS in Amazon EventBridge:** gli eventi di fine della registrazione e i file di metadati JSON di registrazione terminata sono ritardati di almeno `recordingReconnectWindowSeconds`, mentre IVS attende per assicurarsi che non venga avviato un nuovo flusso.

Per istruzioni sulla configurazione della funzionalità di unione dei flussi, consultare [Passaggio 2: Creazione di una fase con registrazione opzionale dei partecipanti](getting-started-create-stage.md) in *Nozioni di base su Streaming in tempo reale di Amazon IVS*.

### Idoneità
<a name="ind-part-rec-merge-frag-eligibility"></a>

Affinché più registrazione siano unite usando lo stesso prefisso S3, devono essere soddisfatte alcune condizioni per tutte le registrazioni:
+ Il valore della proprietà `recordingReconnectWindowSeconds` di AutoParticipantRecordingConfiguration per la fase è impostato su un valore maggiore di 0.
+ Il `StorageConfigurationArn` usato per scrivere gli artefatti VOD è lo stesso per ogni registrazione.
+ La differenza di tempo, in secondi, tra il momento in cui il partecipante esce e quello in cui torna alla fase è inferiore o uguale a `recordingReconnectWindowSeconds`.

Il valore predefinito di `recordingReconnectWindowSeconds` è 0, che disabilita l'unione.

## Sincronizzare le registrazioni di più partecipanti
<a name="ind-part-rec-sync-multiple"></a>

Le registrazioni dei singoli partecipanti includono i tag `EXT-X-PROGRAM-DATE-TIME` nelle playlist HLS, che forniscono timestamp UTC precisi con una precisione di millisecondi per sincronizzare le registrazioni di più partecipanti durante la post-elaborazione.

Quando si registrano singolarmente più partecipanti e si desidera creare una composizione sincronizzata (ad esempio un layout affiancato o picture-in-picture), è possibile utilizzare questi timestamp per allineare le registrazioni con precisione, anche se i partecipanti sono saliti sul palco in momenti diversi o hanno subito discontinuità potenzialmente causate da interruzioni di rete.

La playlist HLS di ogni partecipante include i tag `EXT-X-PROGRAM-DATE-TIME` che contrassegnano:
+ L'inizio della registrazione (primo segmento).
+ Eventuali punti di discontinuità durante la registrazione, ad esempio quando si verifica lo stitching.

Questi timestamp utilizzano una precisione al millisecondo e sono sincronizzati tra tutti i partecipanti utilizzando lo stesso riferimento temporale.

### Playlist HLS di esempio
<a name="ind-part-rec-sync-multiple-hls-playlist"></a>

```
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-TARGETDURATION:12
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="init-0.mp4"
#EXT-X-PROGRAM-DATE-TIME:2024-01-01T12:00:00.000Z
#EXTINF:3.30091,
0.mp4
#EXTINF:5.63794,
1.mp4
#EXTINF:2.74290,
2.mp4
#EXT-X-DISCONTINUITY
#EXT-X-MAP:URI="init-1.mp4"
#EXT-X-PROGRAM-DATE-TIME:2024-01-01T12:00:52.772Z
#EXTINF:2.54412,
3.mp4
#EXTINF:5.63649,
4.mp4
```

I tag `EXT-X-PROGRAM-DATE-TIME` forniscono l'ora UTC esatta per il primo segmento e su ogni punto di discontinuità, consentendo una sincronizzazione precisa con le registrazioni degli altri partecipanti.

### Flusso di lavoro di sincronizzazione
<a name="ind-part-rec-sync-multiple-workflow"></a>

Per sincronizzare le registrazioni di più partecipanti, estrai i timestamp `EXT-X-PROGRAM-DATE-TIME` dalla playlist HLS di ogni partecipante e usali per calcolare gli offset temporali. Questi offset possono quindi essere applicati durante la composizione post-elaborazione utilizzando strumenti di elaborazione video come FFmpeg. Quando sono presenti discontinuità nelle registrazioni, i timestamp in quei punti forniscono i riferimenti temporali necessari per mantenere una sincronizzazione accurata durante l'intera registrazione.

Nota: per un output sincronizzato in tempo reale senza post-elaborazione, prendi in considerazione l'utilizzo della composizione lato server anziché la registrazione dei singoli partecipanti.

## File di metadati JSON
<a name="ind-part-rec-json-metadata-files"></a>

Questi metadati sono in formato JSON. Tale controllo contiene le seguenti informazioni: 


| Campo | Tipo | Campo obbligatorio | Descrizione | 
| --- | --- | --- | --- | 
| `stage_arn` | stringa | Sì | ARN della fase utilizzata come origine della registrazione. | 
| `session_id` | stringa | Sì | Stringa che rappresenta il valore `session_id` della fase in cui viene registrato il partecipante. | 
| `participant_id` | stringa | Sì | Stringa che rappresenta l'identificatore del partecipante registrato. | 
| `recording_started_at` | stringa | Condizionale | Il timestamp UTC di RFC 3339 quando la registrazione inizia. Questo non è disponibile quando `recording_status` è `RECORDING_START_FAILED`. Inoltre, si veda la nota seguente per `recording_ended_at`. | 
| `recording_ended_at` | stringa | Condizionale | Il timestamp UTC di RFC 3339 quando la registrazione termina. Questo valore è disponibile solo quando `recording_status` è `"RECORDING_ENDED"` o`"RECORDING_ENDED_WITH_FAILURE"`. **Nota:** `recording_started_at` e `recording_ended_at` sono timestamp del momento in cui questi eventi vengono generati e potrebbero non corrispondere esattamente ai timestamp del segmento video HLS. Per determinare con precisione la durata di una registrazione, utilizzare il campo `duration_ms`. | 
| `recording_status` | stringa | Sì | Lo stato della registrazione. Valori validi: `"RECORDING_STARTED"`, `"RECORDING_ENDED"`, `"RECORDING_START_FAILED"`, `"RECORDING_ENDED_WITH_FAILURE"`. | 
| `recording_status_message` | stringa | Condizionale | Le informazioni descrittive sullo stato. Questo valore è disponibile solo quando `recording_status` è `"RECORDING_ENDED"` o`"RECORDING_ENDED_WITH_FAILURE"`. | 
| `media` | oggetto | Sì | L'oggetto che contiene gli oggetti enumerati del contenuto multimediale disponibile per la registrazione. Valore valido: `"hls"`. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | oggetto | Sì | Il campo enumerato che descrive l'output in formato Apple HLS. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | intero | Condizionale | La durata del contenuto HLS registrato, in millisecondi. Questo valore è disponibile solo quando `recording_status` è `"RECORDING_ENDED"` o`"RECORDING_ENDED_WITH_FAILURE"`. Se prima di una registrazione si è verificato un errore, allora sarà uguale a 0. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il percorso relativo dal prefisso S3 in cui è memorizzato il contenuto HLS. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il nome del file della playlist principale HLS. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | oggetto | Sì | L'array di rendering (variante HLS) degli oggetti di metadati. È presente sempre almeno un rendering. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il percorso relativo dal prefisso S3 in cui è memorizzato il contenuto HLS per questo rendering. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il nome del file della playlist multimediale per questo rendering. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | oggetto | Condizionale | Il campo enumerato che descrive l'output delle miniature. Questa opzione è disponibile solo quando il campo `storage` della configurazione della miniatura include `SEQUENTIAL` | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il percorso relativo dal prefisso S3 in cui è memorizzato il contenuto delle miniature sequenziale. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | oggetto | Sì | L'array di rendering (variante miniatura) degli oggetti di metadati. È presente sempre almeno un rendering. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il percorso relativo dal prefisso S3 in cui è memorizzato il contenuto della miniatura per questo rendering. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | oggetto | Condizionale | Il campo enumerato che descrive l'output delle miniature. Questa opzione è disponibile solo quando il campo `storage` della configurazione della miniatura include `LATEST` | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il percorso relativo dal prefisso S3 in cui è memorizzato `latest_thumbnail`. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | oggetto | Sì | L'array di rendering (variante miniatura) degli oggetti di metadati. È presente sempre almeno un rendering. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/ivs/latest/RealTimeUserGuide/rt-individual-participant-recording.html)  | stringa | Sì | Il percorso relativo dal prefisso S3 in cui è memorizzata l’ultima miniatura per questo rendering. | 
| `version` | stringa | Sì | La versione dello schema dei metadati. | 

### Esempio: recording-started.json
<a name="ind-part-rec-json-ex-rec-start"></a>

```
{
   "version": "v1",
   "stage_arn": "arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij",
   "session_id": "st-ZyXwvu1T2s",
   "participant_id": "xYz1c2d3e4f",
   "recording_started_at": "2024-03-13T13:17:17Z",
   "recording_status": "RECORDING_STARTED",
   "media": {
      "hls": {
         "path": "media/hls",
         "playlist": "multivariant.m3u8",
         "renditions": [
            {
               "path": "high",
               "playlist": "playlist.m3u8"
            }
         ]
      },
      "thumbnails": {
         "path": "media/thumbnails",
         "renditions": [
            {
               "path": "high"
            }
         ]
      },
      "latest_thumbnail": {
         "path": "media/latest_thumbnail",
         "renditions": [
            {
               "path": "high"
            }
         ]
      }
   }
}
```

### Esempio: recording-ended.json
<a name="ind-part-rec-json-ex-rec-end"></a>

```
{
   "version": "v1",
   "stage_arn": "arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij",
   "session_id": "st-ZyXwvu1T2s",
   "participant_id": "xYz1c2d3e4f",
   "recording_started_at": "2024-03-13T19:44:19Z",
   "recording_ended_at": "2024-03-13T19:55:04Z",
   "recording_status": "RECORDING_ENDED",
   "media": {
      "hls": {
         "duration_ms": 645237,
         "path": "media/hls",
         "playlist": "multivariant.m3u8",
         "renditions": [
            {
               "path": "high",
               "playlist": "playlist.m3u8"
            }
         ]
      },
      "thumbnails": {
         "path": "media/thumbnails",
         "renditions": [
            {
               "path": "high"
            }
         ]
      },
      "latest_thumbnail": {
         "path": "media/latest_thumbnail",
         "renditions": [
            {
               "path": "high"
            }
         ]
      }
   }
}
```

### Esempio: recording-failed.json
<a name="ind-part-rec-json-ex-rec-failed"></a>

```
{
   "version": "v1",
   "stage_arn": "arn:aws:ivs:us-west-2:aws_account_id:stage/AbCdef1G2hij",
   "session_id": "st-ZyXwvu1T2s",
   "participant_id": "xYz1c2d3e4f",
   "recording_started_at": "2024-03-13T19:44:19Z",
   "recording_ended_at": "2024-03-13T19:55:04Z",
   "recording_status": "RECORDING_ENDED_WITH_FAILURE",
   "media": {
      "hls": {
         "duration_ms": 645237,
         "path": "media/hls",
         "playlist": "multivariant.m3u8",
         "renditions": [
            {
               "path": "high",
               "playlist": "playlist.m3u8"
            }
         ]
      },
      "thumbnails": {
         "path": "media/thumbnails",
         "renditions": [
            {
               "path": "high"
            }
         ]
      },
      "latest_thumbnail": {
         "path": "media/latest_thumbnail",
         "renditions": [
            {
               "path": "high"
            }
         ]
      }
   }
}
```

## Conversione delle registrazioni in MP4
<a name="ind-part-rec-convert-rec-mp4"></a>

Le registrazioni dei singoli partecipanti vengono archiviate in formato HLS, costituito da playlist e segmenti MP4 frammentati (fMP4). Per convertire una registrazione HLS in un singolo file MP4, installare FFmpeg ed eseguire il seguente comando:

```
ffmpeg -i /path/to/playlist.m3u8 -i /path/to/playlist.m3u8 -map 0:v -map 1:a -c copy output.mp4
```