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
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 Weitere Informationen finden Sie TimecodeScale |
|
| 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 |
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: Wennkey_frame_fragmentationfü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