View a markdown version of this page

Kinesis Video 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-Datenmodell

Das Zu Kinesis Video Streams hochladen und die Sehen Sie sich die Ausgabe von Kameras mithilfe der Parser-Bibliothek an 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-Entwicklerhandbuch senden oder empfangen Daten im MKV-Format.

Der Zu Kinesis Video Streams hochladen 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.

In den folgenden Abschnitten werden die Komponenten der von der erzeugten MKV-formatted Daten beschrieben. C++

Stream-Header-Elemente

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

Element Description Typische Werte
stream_name Entspricht dem Namen des Kinesis-Videostreams. my-stream
retention_period Die Dauer, in Stunden, für die die Stream-Daten von Kinesis Video Streams gespeichert werden. Geben Sie 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-Managementkonsole 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 vorhanden, werden die Daten mit dem Kinesis-supplied Schlüssel () aws/kinesisvideo verschlüsselt. 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 für Frame-Zeitstempel 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 TimecodeScale in der Matroska-Dokumentation.

key_frame_fragmentation Bei der Einstellung true startet der Stream einen neuen Cluster, wenn ein Keyframe empfangen wird. true
frame_timecodes In diesem true Fall verwendet Kinesis Video Streams die Werte für den Präsentationszeitstempel (pts) und den Decodierungszeitstempel (dts) der empfangenen Frames. Wennfalse, 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 Wenntrue, 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. Wenn die Netzwerklatenz niedrig ist, kann dieser Wert reduziert werden. Wenn die Netzwerklatenz hoch ist, verhindert eine Erhöhung dieses Werts, dass Frames verloren gehen, bevor sie gesendet werden können, weil die Zuweisung dazu führt, dass Frames nicht in den kleineren Puffer gelangen.
replay_duration Die Zeitspanne, in der der Videodatenstrom „zurückgespult“ wird, wenn die Verbindung unterbrochen wird. Dieser Wert kann Null sein, wenn der Verlust von Bildern aufgrund eines Verbindungsabbruchs kein Problem darstellt. Der Wert kann erhöht werden, wenn die nutzende 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
Codec PrivateData 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 MkvStatics.cpp enthält das gMkvTrackVideoBits Array die Pixelbreite und -höhe für den Frame.
Codec PrivateDataSize 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 User-defined Segment-UUID (16 Byte).
default_track_id Eindeutige Zahl ungleich Null für den Track. 1

Streamen Sie Titeldaten

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

Element Description Typische Werte
track_name User-defined Name des Titels. 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 https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-cpp.html C++-Producer-Bibliothek MkvStatics.cpp enthält das MkvTrackVideoBits G-Array die Pixelbreite und -höhe für den Frame.
cpd_size Die Größe der Daten im PrivateData Codec-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 z. B. die Folgenden:

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

  • Decodierungszeitstempel: Der Zeitstempel, zu dem dieser Frame dekodiert wurde. Wenn frühere Frames für die Decodierung von diesem Frame abhängen, könnte dieser Zeitstempel früher sein als der 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 werden AWS-Managementkonsole, müssen die Daten im H.264 Codec codiert sein. Kinesis Video Streams kann jedoch zeitserialisierte Datenströme in jedem Format empfangen.