Kinesis Video Streams Streams-Datenmodell - Amazon Kinesis Video Streams

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Kinesis Video Streams Streams-Datenmodell

Das Producer-Bibliotheken und die "Stream Parser"-Bibliothek senden und empfangen Videodaten in einem Format, das das Einbetten von Informationen neben den eigentlichen Videodaten unterstützt. Dieses Format basiert auf der Matroska (MKV)-Spezifikation.

Das MKV-Format ist eine offene Spezifikation für Mediendaten. Alle Bibliotheken und Codebeispiele im Amazon Kinesis Video Streams Developer Guide senden oder empfangen Daten im MKV-Format.

The Produzentenbibliotheken von Kinesis Video Streams verwendet die Frame Typen StreamDefinition und, um MKV-Stream-Header, Frame-Header und Frame-Daten zu erzeugen.

Weitere Hinweise zur vollständigen MKV-Spezifikation finden Sie unter Matroska-Spezifikationen.

Die folgenden Abschnitte beschreiben die Komponenten von vom C++ Producer-Bibliothek erzeugten Daten im MKV-Format.

Stream-Header-Elemente

Die folgenden MKV-Header-Elemente werden von StreamDefinition (definiert in StreamDefinition.h) verwendet.

Element Beschreibung Typische Werte
stream_name Entspricht dem Namen des Kinesis-Videostreams. my-stream
retention_period Die Dauer (in Stunden), für die Stream-Daten von Kinesis Video Streams gespeichert werden. Geben Sie dies 0 für einen Stream an, der keine Daten speichert. 24
Tags Als Schlüssel-Wert-Paare angegebene Benutzerdaten. Diese Daten werden in der AWS Management Console angezeigt und können von Clientanwendungen gelesen werden, um eine Filterung durchzuführen oder Informationen zu einem Stream abzurufen.
kms_key_id Falls vorhanden, wird der benutzerdefinierte AWS KMS Schlüssel verwendet, um Daten im Stream zu verschlüsseln. Falls nicht, werden die Daten mit dem von Kinesis bereitgestellten Schlüssel () verschlüsselt. aws/kinesis-video 01234567-89ab-cdef-0123-456789ab
streaming_type Derzeit ist der einzige gültige Streaming-Typ STREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
content_type Der benutzerdefinierte Inhaltstyp. Damit gestreamte Videodaten in der Konsole abgespielt werden können, muss der Typ video/h264 lauten. video/h264
max_latency Dieser Wert wird derzeit nicht verwendet und sollte auf 0 gesetzt werden. 0
fragment_duration Dies ist eine Schätzung der Fragmentdauer und wird zur Optimierung verwendet. Die tatsächliche Fragmentdauer wird durch die Streaming-Daten bestimmt. 2
timecode_scale

Gibt die Skala an, die von Frame-Timestamps verwendet wird. Der Standardwert beträgt 1 Millisekunde. Wenn Sie 0 festlegen, wird ebenfalls der Standardwert von 1 Millisekunde festgelegt. Dieser Wert kann zwischen 100 Nanosekunden und einer Sekunde liegen.

Weitere Informationen finden Sie TimecodeScalein der Matroska-Dokumentation.

key_frame_fragmentation Bei der Einstellung true startet der Stream einen neuen Cluster, wenn ein Keyframe empfangen wird. true
frame_timecodes Fallstrue, verwendet Kinesis Video Streams die Werte für den Präsentationszeitstempel (pts) und den Dekodierungszeitstempel (dts) der empfangenen Frames. Fallsfalse, stempelt Kinesis Video Streams die Frames beim Empfang mit vom System generierten Zeitwerten. true
absolute_fragment_time Mit dem Wert true werden die Cluster-Timecodes als absolute Zeiten (z. B. anhand der Systemuhr des Produzenten) interpretiert. Mit dem Wert false werden die Cluster-Timecodes als relativ zur Startzeit des Streams interpretiert. true
fragment_acks Fallstrue, werden Bestätigungen (ACKs) gesendet, wenn Kinesis Video Streams die Daten empfängt. Die ACKs können mit der Callback-Funktion KinesisVideoStreamFragmentAck oder KinesisVideoStreamParseFragmentAck angenommen werden. true
restart_on_error Gibt an, ob der Stream die Übertragung nach einem Fehler fortsetzen soll. true
nal_adaptation_flags Gibt an, ob der Inhalt NAL (Network Abstraction Layer)-Adaptions- oder Codec-interne Daten enthält. Gültige Flags sind NAL_ADAPTATION_ANNEXB_NALS und NAL_ADAPTATION_ANNEXB_CPD_NALS. NAL_ADAPTATION_ANNEXB_NALS
frame_rate Schätzwert der Frame-Rate des Inhalts. Dieser Wert wird zur Optimierung verwendet. Die tatsächliche Frame-Rate wird durch die Rate der eingehenden Daten bestimmt. Durch Festlegen von 0 wird der Standardwert 24 zugewiesen. 24
avg_bandwidth_bps Eine Schätzung der Inhaltsbandbreite in Mbit/s. Dieser Wert wird zur Optimierung verwendet. Der tatsächliche Wert wird durch die Bandbreite der eingehenden Daten bestimmt. Die ungefähre Bandbreite für einen Videostream mit einer Auflösung von 720p bei 25 FPS beträgt beispielsweise etwa 5 Mbit/s. 5
buffer_duration Die Dauer der Pufferung des Inhalts auf Konsumentenseite. Bei geringer Netzwerklatenz kann dieser Wert reduziert werden. Wenn die Netzwerklatenz hoch ist, wird durch eine Erhöhung dieses Werts verhindert, dass Frames verworfen werden, bevor sie gesendet werden können, da die Zuordnung die Frames nicht in den kleineren Puffer legt.
replay_duration Die Zeitspanne, für die der Videodatenstrom „zurückgespult“ wird, wenn die Verbindung unterbrochen wird. Dieser Wert kann Null sein, wenn Bildverluste aufgrund eines Verbindungsverlusts kein Problem darstellen. Der Wert kann erhöht werden, wenn die verbrauchende Anwendung redundante Frames entfernen kann. Dieser Wert sollte kleiner als die Pufferdauer sein, andernfalls wird die Pufferdauer verwendet.
connection_staleness Die Zeitspanne, die eine Verbindung aufrechterhalten wird, wenn keine Daten eingehen.
codec_id Der von dem Inhalt verwendete Codec. Weitere Informationen finden Sie unter CodecID in der Matroska-Spezifikation. V_MPEG2
track_name Der benutzerdefinierte Name des Tracks my_track
codecPrivateData Vom Encoder zur Decodierung der Frame-Daten bereitgestellte Informationen wie Frame-Breite und -Höhe in Pixeln, die von vielen nachgelagerten Konsumenten benötigt werden. In der C++ Producer-Bibliothek enthält das Array gMkvTrackVideoBits in der Datei MkvStatics.cpp Elemente für Frame-Breite und -Höhe in Pixeln.
codecPrivateDataGröße Die Größe der Daten im Parameter codecPrivateData
track_type Der Typ des Tracks für den Stream. MKV_TRACK_INFO_TYPE_AUDIO oder MKV_TRACK_INFO_TYPE_VIDEO
segment_uuid Benutzerdefinierte Segment-UUID (16 Bytes).
default_track_id Eindeutige Zahl ungleich Null für den Track. 1

Streamen Sie Track-Daten

Die folgenden MKV-Track-Elemente werden von StreamDefinition (definiert in StreamDefinition.h) verwendet.

Element Beschreibung Typische Werte
track_name Benutzerdefinierter Track-Name. Beispiel: "Audio" für die Audiospur. audio
codec_id Codec-ID für den Track. Beispiel: "A_AAC" für eine Audiospur. A_AAC
cpd Die vom Encoder bereitgestellten Daten, die zum Decodieren der Frame-Daten verwendet werden. Diese Daten können Frame-Breite und -Höhe in Pixel umfassen, die von vielen nachgelagerten Konsumenten benötigt werden. In der C++ Producer Library enthält das gMkvTrack VideoBits Array in MkvStatics .cpp die Pixelbreite und -höhe für den Frame.
cpd_size Die Größe der Daten im codecPrivateData Parameter.
track_type Der Typ des Tracks. Beispielsweise können Sie den Aufzählungswert MKV_TRACK_INFO_TYPE_AUDIO für die Audioverarbeitung auswählen. MKV_TRACK_INFO_TYPE_AUDIO

Frame-Header-Elemente

Die folgenden MKV-Header-Elemente werden von Frame (definiert im KinesisVideoPic-Paket in der Datei mkvgen/Include.h) verwendet:

  • Frame Index: Ein monoton ansteigender Wert.

  • Flags: Der Typ des Frames. Gültige Werte sind unter anderem:

    • FRAME_FLAGS_NONE

    • FRAME_FLAG_KEY_FRAME: Wenn key_frame_fragmentation für den Stream aktiviert ist, wird bei jedem Keyframe ein neues Fragment begonnen.

    • FRAME_FLAG_DISCARDABLE_FRAME: Gibt an, dass der Decoder diesen Frame verwerfen kann, wenn die Decodierung langsam erfolgt.

    • FRAME_FLAG_INVISIBLE_FRAME: Die Dauer dieses Blocks beträgt 0.

  • Zeitstempel für die Dekodierung: Der Zeitstempel, zu dem dieser Frame dekodiert wurde. Wenn frühere Frames für die Dekodierung von diesem Frame abhängen, liegt dieser Zeitstempel möglicherweise vor dem früherer Frames. Dieser Wert gilt relativ zum Anfang des Fragments.

  • Zeitstempel der Präsentation: Der Zeitstempel, zu dem dieser Frame angezeigt wird. Dieser Wert gilt relativ zum Anfang des Fragments.

  • Duration: Die Wiedergabedauer des Frames.

  • Size: Die Größe der Framedaten in Byte.

MKV-Frame-Daten

Die Daten in frame.frameData können je nach verwendetem Codierungsschema entweder nur die Mediendaten des Frames enthalten oder zusätzlich auch eingebettete Header-Informationen. Um in der angezeigt zu werdenAWS Management Console, müssen die Daten im H.264-Codec codiert sein. Kinesis Video Streams kann jedoch zeitserialisierte Datenströme in jedem Format empfangen.