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à.
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 si basa sulla specifica Matroska (MKV).
Il 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 seguenti sezioni descrivono i componenti di dati in formato MKV creati da C++.
Argomenti
Elementi di intestazione dello stream
I seguenti elementi di intestazione MKV vengono utilizzati da StreamDefinition
(definiti in StreamDefinition.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. 0 Specificalo 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/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 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 Per ulteriori informazioni, consultate la documentazione TimecodeScale |
|
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 fotogrammi 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. ACKs Possono 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 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 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_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 |
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'gMkvTrackVideoBits array 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 or MKV_TRACK_INFO_TYPE_VIDEO |
segment_uuid | uuid segmento definito dall'utente (16 byte). | |
default_track_id | Numero univoco diverso da zero per la traccia. | 1 |
Streaming dei dati delle tracce
I seguenti elementi della traccia MKV vengono utilizzati da StreamDefinition
(definiti in StreamDefinition.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 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 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 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 i seguenti:
-
FRAME_FLAGS_NONE
-
FRAME_FLAG_KEY_FRAME
: sekey_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
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