

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à.

# Modello di dati Kinesis Video Streams
<a name="how-data"></a>

[Caricamento su Kinesis Video Streams](producer-sdk.md) e [Guarda l'output delle telecamere utilizzando la libreria parser](parser-library.md) inviano e ricevono dati video in un formato che supporta l'incorporamento di informazioni insieme ai dati video. Questo formato si basa sulla specifica Matroska (MKV).

Il [formato MKV](https://en.wikipedia.org/wiki/Matroska) è una specifica aperta per i dati multimediali. Tutte le librerie e gli esempi di codice contenuti nella *Amazon Kinesis Video Streams* Developer Guide inviano o ricevono dati in formato MKV. 

[Caricamento su Kinesis Video Streams](producer-sdk.md)Utilizza i `Frame` tipi `StreamDefinition` e per produrre intestazioni di stream MKV, intestazioni di frame e dati di frame.

Per informazioni sulle specifiche complete di MKV, consulta l'articolo sulle [specifiche Matroska](https://www.matroska.org/technical/specs/index.html).

Le seguenti sezioni descrivono i componenti di dati in formato MKV creati da [C\$1\$1](producer-sdk-cpp.md).

**Topics**
+ [Elementi di intestazione dello stream](#how-data-header-streamdefinition)
+ [Streaming dei dati delle tracce](#how-data-header-streamtrack)
+ [Elementi dell'intestazione del frame](#how-data-header-frame)
+ [Dati del frame MKV](#how-data-frame)

## Elementi di intestazione dello stream
<a name="how-data-header-streamdefinition"></a>

I seguenti elementi di intestazione MKV vengono utilizzati da `StreamDefinition` (definiti in `StreamDefinition.h`).


****  

| Elemento | Description | Valori tipici | 
| --- | --- | --- | 
| stream\$1name | Corrisponde al nome dello stream video Kinesis. | my-stream | 
| retention\$1period | La durata, in ore, del flusso di dati viene mantenuta da Kinesis Video Streams. 0Specificalo per uno stream che non conserva dati.  | 24 | 
| tags | Una raccolta chiave-valore di dati utente. Questi dati vengono visualizzati nella Console di gestione AWS e possono essere letti dalle applicazioni client per filtrare o ottenere informazioni su un flusso. |  | 
| kms\$1key\$1id | Se presente, la AWS KMS chiave definita dall'utente viene utilizzata per crittografare i dati sullo stream. Se assenti, i dati vengono crittografati dalla chiave fornita da Kinesis (). aws/kinesisvideo | 01234567-89ab-cdef-0123-456789ab | 
| streaming\$1type | Attualmente, l'unico tipo di streaming valido è STREAMING\$1TYPE\$1REALTIME. | STREAMING\$1TYPE\$1REALTIME | 
| content\$1type | Il tipo di contenuto definito dall'utente. Per lo streaming di dati video da riprodurre nella console, il tipo di contenuto deve essere video/h264. | video/h264 | 
| max\$1latency | Questo valore non è attualmente utilizzato e dovrebbe essere impostato su 0. | 0 | 
| fragment\$1duration | La stima della durata dei tuoi frammenti, utile per l'ottimizzazione. La durata effettiva è determinata dai dati di streaming. | 2 | 
| timecode\$1scale | Indica la scala utilizzata dai timestamp dei frame. Il valore predefinito è 1 millisecondo. Se si specifica `0`, si assegna anche il valore predefinito di 1 millisecondo. Questo valore può essere compreso tra 100 nanosecondi e 1 secondo. Per ulteriori informazioni, consultate la documentazione [TimecodeScale](https://matroska.org/technical/specs/notes.html#TimecodeScale)di Matroska. |  | 
| key\$1frame\$1fragmentation | Se true, il flusso avvia un nuovo cluster quando riceve un keyframe. | true | 
| frame\$1timecodes | Setrue, Kinesis Video Streams utilizza i valori del timestamp di presentazione (pts) e del timestamp di decodifica (dts) dei frame ricevuti. Sefalse, Kinesis Video Streams stampa i fotogrammi quando vengono ricevuti con valori temporali generati dal sistema. | true | 
| absolute\$1fragment\$1time |  Se true, i timecode del cluster vengono interpretati come se utilizzassero tempo assoluto (ad esempio, dall'orologio di sistema del producer). Se false, i timecode del cluster sono interpretati come relativi all'ora di inizio del flusso. | true | 
| fragment\$1acks |  Setrue, le conferme (ACKs) vengono inviate quando Kinesis Video Streams riceve i dati. ACKs Possono essere ricevuti utilizzando o i callback. KinesisVideoStreamFragmentAck KinesisVideoStreamParseFragmentAck | true | 
| restart\$1on\$1error | Indica se il flusso deve riprendere la trasmissione dopo la segnalazione di un errore di flusso. | true | 
| nal\$1adaptation\$1flags | Indica se i dati privati del codec o l'adattamento NAL (Network Abstraction Layer) sono presenti nel contenuto. I flag validi includono NAL\$1ADAPTATION\$1ANNEXB\$1NALS e NAL\$1ADAPTATION\$1ANNEXB\$1CPD\$1NALS. | NAL\$1ADAPTATION\$1ANNEXB\$1NALS | 
| frame\$1rate | Una stima della frequenza di frame del contenuto. Tale valore viene utilizzato per l'ottimizzazione. La frequenza di frame effettiva è determinata dalla velocità dei dati in entrata. Se si specifica 0, si assegna il valore predefinito di 24. | 24 | 
| avg\$1bandwidth\$1bps | Una stima della larghezza di banda del contenuto, in Mbps. Tale valore viene utilizzato per l'ottimizzazione. La frequenza effettiva è determinata dalla larghezza di banda dei dati in entrata. Ad esempio, per un flusso video con risoluzione di 720 p in esecuzione a 25 FPS, puoi aspettarti una larghezza di banda media di 5 Mbps. | 5 | 
| buffer\$1duration | La durata del buffering del contenuto sul producer. Se la latenza di rete è bassa, questo valore può essere ridotto. Se la latenza di rete è elevata, aumentando questo valore si evita che i frame vengano eliminati prima che possano essere inviati, a causa dell'incapacità dell'allocazione di inserire i frame nel buffer più piccolo. |  | 
| replay\$1duration | La quantità di tempo in cui il flusso di dati video viene «riavvolto» in caso di interruzione della connessione. Questo valore può essere zero se la perdita di frame a causa della perdita di connessione non è un problema. Il valore può essere aumentato se l'applicazione che utilizza è in grado di rimuovere i frame ridondanti. Questo valore deve essere inferiore alla durata del buffer, altrimenti viene utilizzata la durata del buffer. |  | 
| connection\$1staleness | Il periodo durante il quale una connessione viene mantenuta quando non vengono ricevuti dati. |  | 
| codec\$1id | Il codec utilizzato per il contenuto. Per ulteriori informazioni, consulta [CodecID](https://matroska.org/technical/specs/codecid/index.html) nelle specifiche Matroska. | V\$1 MPEG2 | 
| track\$1name | Il nome definito dall'utente della traccia. | my\$1track | 
| codecPrivateData | I dati forniti dall'encoder utilizzato per decodificare i dati dei frame, ad esempio la larghezza di banda e l'altezza in pixel degli stessi, un'informazione richiesta da numerosi consumer a valle. Nella [libreria C\$1\$1 Producer](producer-sdk-cpp.md), l'gMkvTrackVideoBitsarray MkvStatics.cpp include la larghezza e l'altezza dei pixel per il frame. |  | 
| codecPrivateDataDimensioni | La dimensione dei dati nel parametro codecPrivateData. |  | 
| track\$1type | Il tipo di traccia per il flusso. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO or MKV\$1TRACK\$1INFO\$1TYPE\$1VIDEO | 
| segment\$1uuid | uuid segmento definito dall'utente (16 byte). |  | 
| default\$1track\$1id | Numero univoco diverso da zero per la traccia. | 1 | 

## Streaming dei dati delle tracce
<a name="how-data-header-streamtrack"></a>

I seguenti elementi della traccia MKV vengono utilizzati da `StreamDefinition` (definiti in `StreamDefinition.h`).


****  

| Elemento | Description | Valori tipici | 
| --- | --- | --- | 
| track\$1name | Nome traccia definito dall'utente. Ad esempio, "audio" per la traccia audio.  | audio | 
| codec\$1id | Id codec della traccia. Ad esempio, "A\$1AAC" per la traccia audio. | A\$1AAC | 
| cpd | I dati forniti dall'encoder utilizzato per decodificare i dati del frame. Queste informazioni possono includere larghezza e altezza del frame in pixel, necessarie per numerosi consumatori downstream. Nella [libreria C\$1\$1 Producer](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/producer-sdk-cpp.html), l' gMkvTrackVideoBits array in MkvStatics .cpp include la larghezza e l'altezza dei pixel per il frame.  |  | 
| cpd\$1size | La dimensione dei dati nel parametro. codecPrivateData  |  | 
| track\$1type | Il tipo di traccia. Ad esempio, è possibile utilizzare il valore di enum MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO per l'audio. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO | 

## Elementi dell'intestazione del frame
<a name="how-data-header-frame"></a>

I seguenti elementi di intestazione MKV vengono utilizzati da `Frame` (definiti nel pacchetto `KinesisVideoPic`, in `mkvgen/Include.h`):
+ **Frame Index (Indice del frame):** un valore a incremento monotono.
+ **Flags (Flag):** il tipo di frame. I valori validi includono quanto segue:
  + `FRAME_FLAGS_NONE`
  + `FRAME_FLAG_KEY_FRAME`: se `key_frame_fragmentation` è impostato su flusso, i key frame avviano un nuovo frammento.
  + `FRAME_FLAG_DISCARDABLE_FRAME`: indica al decoder che è possibile ignorare questo frame se la decodifica è lenta.
  + `FRAME_FLAG_INVISIBLE_FRAME`: la durata di questo blocco è 0.
+ **Timestamp di decodifica: il timestamp** di quando questo frame è stato decodificato. Se i frame precedenti dipendono da questo frame per la decodifica, questo timestamp potrebbe essere precedente a quello dei frame precedenti. Questo valore è relativo all'inizio del frammento.
+ **Timestamp di presentazione: il timestamp** di quando viene visualizzato questo fotogramma. Questo valore è relativo all'inizio del frammento.
+ **Duration (Durata):** la durata di riproduzione del frame.
+ **Size (Dimensione):** la dimensione dei dati del frame in byte

## Dati del frame MKV
<a name="how-data-frame"></a>

I dati in `frame.frameData` potrebbero contenere solo i dati multimediali per il frame o ulteriori informazioni di intestazione annidate, a seconda dello schema di codifica utilizzato. Per essere visualizzati in Console di gestione AWS, i dati devono essere codificati nel codec [H.264](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC), ma Kinesis Video Streams può ricevere flussi di dati con serializzazione temporale in qualsiasi formato.