Modello di dati Kinesis Video Streams - Flusso di video Amazon Kinesis

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 utilizzando la libreria parser inviano e ricevono dati video in un formato che supporta l'incorporamento di informazioni insieme ai dati video. Questo formato è basato sulla specifica Matroska (). MKV

Il MKVformato è 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 MKV nel formato.

Caricamento su Kinesis Video StreamsUtilizza i Frame tipi StreamDefinition e per produrre intestazioni di MKV stream, intestazioni di frame e dati di frame.

Per informazioni sulle MKV specifiche complete, vedere Specifiche Matroska.

Le sezioni seguenti descrivono i componenti dei dati in MKV formato elettronico prodotti da. C++

Elementi dell'intestazione Stream

I seguenti elementi di MKV intestazione sono utilizzati da StreamDefinition (definito inStreamDefinition.h).

Elemento Descrizione Valori tipici
stream_name Corrisponde al nome dello stream video Kinesis. my-stream
retention_period 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 AWS Management Console 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 assenti, i dati vengono crittografati dalla chiave fornita da Kinesis (). aws/kinesis-video 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 dovrebbe 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 TimecodeScaledi 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 stampa i fotogrammi 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, le conferme (ACKs) vengono inviate quando Kinesis Video Streams riceve i dati. ACKsPossono essere ricevuti utilizzando o i callback. KinesisVideoStreamFragmentAck 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 nel contenuto sono presenti dati privati di adattamento NAL (Network Abstraction Layer) o dati privati del codec. 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 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 uno streaming video con risoluzione 720p a 25FPS, puoi aspettarti che la larghezza di banda media sia 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, 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_duration 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_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
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++ Producer, l'gMkvTrackVideoBitsarray MkvStatics.cpp include la larghezza e l'altezza dei pixel per il frame.
codecPrivateDataDimensioni La dimensione dei dati nel parametro codecPrivateData.
track_type Il tipo di traccia per il flusso. MKV_ TRACK _ INFO _ TYPE _ AUDIO o MKVTRACK_ INFO _ TYPE _ VIDEO
segment_uuid uuid segmento definito dall'utente (16 byte).
default_track_id Numero univoco diverso da zero per la traccia. 1

Trasmetti i dati della traccia

I seguenti elementi della MKV traccia sono utilizzati da StreamDefinition (definito inStreamDefinition.h).

Elemento Descrizione Valori tipici
track_name Nome traccia definito dall'utente. Ad esempio, "audio" per la traccia audio. audio
codec_id Id codec della traccia. Ad esempio, «A_AAC" per una 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 C++ Producer, l' gMkvTrackVideoBits array in 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 enum di MKV _ _ TRACK _ INFO TYPE _ AUDIO per l'audio. MKV_TRACK_INFO_TYPE_AUDIO

Elementi del frame header

I seguenti elementi di MKV intestazione sono utilizzati da Frame (definito nel KinesisVideoPic pacchetto, inmkvgen/Include.h):

  • Frame Index (Indice del frame): un valore a incremento monotono.

  • Flags (Flag): il tipo di frame. I valori validi includono i seguenti:

    • 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

MKVdati del frame

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 AWS Management Console, i dati devono essere codificati nel codec H.264, ma Kinesis Video Streams può ricevere flussi di dati con serializzazione temporale in qualsiasi formato.