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
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++
Argomenti
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. 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/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 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 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 |
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 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
: 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 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