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.
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
The 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
Die folgenden Abschnitte beschreiben die Komponenten von vom C++ 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/kinesisvideo |
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 von Frame-Timestamps verwendete Skala an. 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 | 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. ACKs Sie können mit den Rückrufen oder empfangen werden. KinesisVideoStreamFragmentAck KinesisVideoStreamParseFragmentAck |
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 |
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 MkvStatics.cpp enthält das gMkvTrackVideoBits Array in die Pixelbreite und -höhe für den Frame. |
|
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-Bibliothek 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
: Wennkey_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 werden AWS Management Console, müssen die Daten im H.264-Codec