View a markdown version of this page

Modello di dati Kinesis Video Streams - Amazon Kinesis Video Streams

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

Caricamento su Kinesis Video Streams e Guarda l'output delle telecamere usando la libreria parser 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 è 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 StreamsUtilizza 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.

Le sezioni seguenti descrivono i componenti dei MKV-formatted dati prodotti da. C++

Elementi di intestazione dello stream

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

Elemento Description Valori tipici
stream_name Corrisponde al nome del flusso video Kinesis. my-stream
retention_period La durata, in ore, della persistenza dei dati dello streaming da parte di Kinesis Video Streams. Specifica 0 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_key_id Se presente, la AWS KMS chiave definita dall'utente viene utilizzata per crittografare i dati sullo stream. Se assente, i dati vengono crittografati dalla Kinesis-supplied chiave (). aws/kinesisvideo 01234567-89ab-cdef-0123-456789ab
streaming_type Attualmente, l'unico tipo di streaming valido è STREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
content_type 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_latency Questo valore non è attualmente utilizzato e deve essere impostato su 0. 0
fragment_duration La stima della durata dei tuoi frammenti, utile per l'ottimizzazione. La durata effettiva è determinata dai dati di streaming. 2
timecode_scale

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 di Matroska.

key_frame_fragmentation Se true, il flusso avvia un nuovo cluster quando riceve un keyframe. true
frame_timecodes 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 contrassegna i frame quando vengono ricevuti con valori temporali generati dal sistema. true
absolute_fragment_time 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_acks Setrue, i riconoscimenti (ACK) vengono inviati quando Kinesis Video Streams riceve i dati. Le ACK possono essere ricevute utilizzando le callback KinesisVideoStreamFragmentAck o KinesisVideoStreamParseFragmentAck. true
restart_on_error Indica se il flusso deve riprendere la trasmissione dopo la segnalazione di un errore di flusso. true
nal_adaptation_flags Indica se i dati privati del codec o l'adattamento NAL (Network Abstraction Layer) sono presenti nel contenuto. I flag validi includono NAL_ADAPTATION_ANNEXB_NALS e NAL_ADAPTATION_ANNEXB_CPD_NALS. NAL_ADAPTATION_ANNEXB_NALS
frame_rate 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_bandwidth_bps Una stima della larghezza di banda dei contenuti, 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_duration 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, l'aumento di questo valore impedisce che i frame vengano eliminati prima di poter essere inviati, a causa del mancato inserimento dei frame nel buffer più piccolo nell'allocazione.
replay_duration Periodo 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 dovuta alla perdita della connessione non è un problema. Il valore può essere aumentato se l'applicazione che lo 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_staleness Il periodo durante il quale una connessione viene mantenuta quando non vengono ricevuti dati.
codec_id Il codec utilizzato per il contenuto. Per ulteriori informazioni, consulta CodecID nelle specifiche Matroska. V_MPEG2
track_name Il nome definito dall'utente della traccia. my_track
codec PrivateData 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 di produzione C++, l'gMkvTrackVideoBitsarray MkvStatics.cpp include la larghezza e l'altezza dei pixel per il frame.
codec PrivateDataSize La dimensione dei dati nel parametro codecPrivateData.
track_type Il tipo di traccia per il flusso. MKV_TRACK_INFO_TYPE_AUDIO or MKV_TRACK_INFO_TYPE_VIDEO
segment_uuid User-defined uuid del segmento (16 byte).
default_track_id Numero univoco diverso da zero per la traccia. 1

Trasmetti i dati della traccia

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

Elemento Description Valori tipici
track_name User-defined nome della traccia. Ad esempio, "audio" per la traccia audio. audio
codec_id Id codec della traccia. Ad esempio, "A_AAC" per la traccia audio. A_AAC
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 di produzione C++, l'MkvTrackVideoBits array g MkvStatics.cpp include la larghezza e l'altezza dei pixel per il frame.
cpd_size La dimensione dei dati nel parametro codecPrivateData .
track_type Il tipo di traccia. Ad esempio, è possibile utilizzare il valore di enum MKV_TRACK_INFO_TYPE_AUDIO per l'audio. MKV_TRACK_INFO_TYPE_AUDIO

Elementi dell'intestazione del frame

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

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 H.264 codec, ma Kinesis Video Streams può ricevere flussi di dati serializzati nel tempo in qualsiasi formato.