

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: So funktioniert's
<a name="how-it-works"></a>

**Topics**
+ [Unterstützung für Kinesis Video Streams API und Producer-Bibliotheken](how-it-works-kinesis-video-api-producer-sdk.md)
+ [Kinesis Video Streams Streams-Datenmodell](how-data.md)

Sie können Amazon Kinesis Video Streams, ein vollständig verwaltetes Programm, verwenden AWS-Service, um Live-Videos von Geräten auf das Gerät zu streamen AWS Cloud und dauerhaft zu speichern. Anschließend können Sie eigene Anwendungen für die Echtzeitverarbeitung von Videodaten oder die Analyse von Videodaten mittels Stapelverarbeitung erstellen.

Das folgende Diagramm bietet einen Überblick über die Funktionsweise von Kinesis Video Streams.





![\[Diagramm, das die Interaktion von Produzenten und Verbrauchern in Kinesis Video Streams zeigt.\]](http://docs.aws.amazon.com/de_de/kinesisvideostreams/latest/dg/images/acuity-arch-3a.png)


Die Abbildung illustriert die Interaktion zwischen den folgenden Komponenten:
+ **Produzent** — Jede Quelle, die Daten in einen Kinesis-Videostream überträgt. Ein Produzent kann ein beliebiges Videogerät sein, z. B. eine Sicherheitskamera, eine am Körper getragene Kamera, eine Smartphone-Kamera oder eine Armaturenbrettkamera. Ein Produzent kann zudem andere Daten wie Audiofeeds, Bilder oder RADAR-Daten senden.

  Ein einzelner Produzent kann einzelne, aber auch mehrere Videostreams generieren. Beispielsweise kann eine Videokamera Videodaten an einen Kinesis-Videostream und Audiodaten an einen anderen übertragen.
  + **Kinesis Video Streams Streams-Produzentenbibliotheken** — Eine Reihe von Software und Bibliotheken, die Sie auf Ihren Geräten installieren und konfigurieren können. Sie können diese Bibliotheken verwenden, um Videos auf verschiedene Arten sicher zu verbinden und sie zuverlässig zu streamen, z. B. in Echtzeit, nachdem sie einige Sekunden lang zwischengespeichert wurden, oder als after-the-fact Medien-Uploads.
+ **Kinesis-Videostream** — Eine Ressource, die Sie verwenden können, um Live-Videodaten zu transportieren, optional zu speichern und die Daten sowohl in Echtzeit als auch auf Batch- oder Einmalbasis für den Konsum verfügbar zu machen. In einer typischen Konfiguration veröffentlicht in einem Kinesis-Videostream nur ein Produzent Daten. 

  Der Stream kann Audio-, Video- und ähnliche zeitcodierte Datenstreams transportieren, z. B. Tiefenmessungsfeeds, RADAR-Feeds und mehr. Sie erstellen einen Kinesis-Videostream mithilfe von AWS-Managementkonsole oder programmgesteuert mithilfe von. AWS SDKs

  Mehrere unabhängige Anwendungen können einen Kinesis-Videostream parallel nutzen. 
+ **Consumer** — Ruft Daten wie Fragmente und Frames aus einem Kinesis-Videostream ab, um sie anzusehen, zu verarbeiten oder zu analysieren. Im Allgemeinen werden diese Verbraucher als Kinesis Video Streams Streams-Anwendungen bezeichnet. Sie können Anwendungen schreiben, die Daten in Kinesis Video Streams in Echtzeit nutzen und verarbeiten, oder nachdem die Daten gespeichert und zeitindexiert wurden, wenn keine Verarbeitung mit niedriger Latenz erforderlich ist. Sie können diese Verbraucheranwendungen für die Ausführung auf Amazon EC2 EC2-Instances erstellen.
  + [Sehen Sie sich die Ausgabe von Kameras mithilfe der Parser-Bibliothek an](parser-library.md)— Ermöglicht Kinesis Video Streams Streams-Anwendungen das zuverlässige Abrufen von Medien aus dem Kinesis-Videostream mit geringer Latenz. Zudem werden die Frame-Grenzen in den Medien analysiert, damit Anwendungen sich auf die Verarbeitung und Analyse der Frames konzentrieren können.

# Unterstützung für Kinesis Video Streams API und Producer-Bibliotheken
<a name="how-it-works-kinesis-video-api-producer-sdk"></a>

Mit Kinesis Video Streams APIs können Sie Streams erstellen und verwalten sowie Mediendaten in und aus einem Stream lesen oder schreiben. Die Kinesis Video Streams Streams-Konsole unterstützt neben den Verwaltungsfunktionen auch Live- und video-on-demand Playback-Funktionen. Kinesis Video Streams bietet auch eine Reihe von Producer-Bibliotheken, die Sie in Ihrem Anwendungscode verwenden können, um Daten aus Ihren Medienquellen zu extrahieren und in Ihren Kinesis-Videostream hochzuladen.

**Topics**
+ [Kinesis Video Streams Videostreams-API](#how-it-works-kinesis-video-api)
+ [Muster für die Erkennung von Endpunkten](#how-it-works-api-pattern)
+ [Producer-Bibliotheken](#how-it-works-producer-sdk)

## Kinesis Video Streams Videostreams-API
<a name="how-it-works-kinesis-video-api"></a>

Kinesis Video Streams ermöglicht APIs die Erstellung und Verwaltung von Kinesis Video Streams. Es ermöglicht auch APIs das Lesen und Schreiben von Mediendaten in einen Stream wie folgt:
+ **Producer-API** — Kinesis Video Streams bietet eine `PutMedia` API zum Schreiben von Mediendaten in einen Kinesis-Videostream. In einer `PutMedia`-Anforderung sendet der Produzent einen Stream von Medienfragmenten. Ein *Fragment* ist eine abgeschlossene Folge von Frames. Zwischen den Frames eines Fragments und den Frames anderer Fragmente dürfen keine Abhängigkeiten bestehen. Weitere Informationen finden Sie unter [PutMedia](API_dataplane_PutMedia.md).

  Sobald Fragmente eintreffen, weist Kinesis Video Streams in aufsteigender Reihenfolge eine eindeutige Fragmentnummer zu. Es speichert auch produzenten- und serverseitige Zeitstempel für jedes Fragment als Kinesis Video Streams-spezifische Metadaten. 
+ **Verbraucher APIs — Verbraucher** können Folgendes APIs verwenden, um Daten aus einem Stream abzurufen:
  + `GetMedia`: Wenn Konsumenten diese API verwenden, müssen sie das Startfragment identifizieren. Die API gibt anschließend Fragmente in der Reihenfolge zurück, in der sie dem Stream hinzugefügt wurden (in aufsteigender Reihenfolge der Fragmentnummern). Die Mediendaten in den Fragmenten liegen in einem strukturierten Format wie [Matroska (MKV)](https://www.matroska.org/technical/specs/index.html) vor. Weitere Informationen finden Sie unter [GetMedia](API_dataplane_GetMedia.md).
**Anmerkung**  
`GetMedia` weiß, wo sich die Fragmente befinden (archiviert im Datenspeicher oder verfügbar in Echtzeit). Wenn `GetMedia` beispielsweise feststellt, dass das Startfragment archiviert ist, wird das Zurückgeben von Fragmenten aus dem Datenspeicher gestartet. Wenn es neuere Fragmente zurückgeben muss, die noch nicht archiviert wurden, `GetMedia` wechselt es zum Lesen von Fragmenten aus einem speicherinternen Stream-Puffer. 

    Dies ist ein Beispiel für einen kontinuierlichen Konsumenten, der Fragmente in der Reihenfolge verarbeitet, in der sie vom Stream übernommen werden.

    Bei Verwendung von `GetMedia` können Anwendungen aus- oder zurückfallen und dann ohne zusätzlichen Aufwand wieder auf den aktuellen Stand gelangen. Mit `GetMedia` können Anwendungen Daten verarbeiten, die im Datenspeicher archiviert sind. Sobald die Anwendung wieder auf dem aktuellen Stand ist, setzt `GetMedia` das Einspeisen von Mediendaten in Echtzeit unmittelbar bei deren Ankunft fort. 
  + `GetMediaFromFragmentList` (und `ListFragments`): Stapelverarbeitungsanwendungen gelten als Offline-Konsumenten. Nutzer, die offline sind, können sich dafür entscheiden, bestimmte Medienfragmente oder Videobereiche explizit abzurufen, indem sie und kombinieren. `ListFragments` `GetMediaFromFragmentList` APIs `ListFragments`und `GetMediaFromFragmentList` ermöglichen es einer Anwendung, Videosegmente für einen bestimmten Zeitraum oder Fragmentbereich zu identifizieren und diese Fragmente dann entweder sequentiell oder parallel zur Verarbeitung abzurufen. Diese Herangehensweise eignet sich für `MapReduce`-Anwendungssuites, die große Datenmengen schnell parallel verarbeiten müssen.

    Nehmen wir an, dass ein Konsument die Videofragmente für einen Tag verarbeiten möchte. Der Konsument würde folgendermaßen vorgehen:

    1. Liste der Fragmente durch Aufrufen der `ListFragments`-API abrufen und einen Zeitraum angeben, um die gewünschten Fragmente auszuwählen.

       Die API gibt die Metadaten aller Fragmente im angegebenen Zeitraum zurück. Die Metadaten enthalten Informationen wie Fragmentnummer, produzenten- und serverseitige Zeitstempel usw. 

    1. Fragment-Metadatenliste verwenden und Fragmente in beliebiger Reihenfolge abrufen. Um beispielsweise alle Fragmente für den Tag zu verarbeiten, könnte der Verbraucher die Liste in Unterlisten aufteilen und Mitarbeiter (z. B. mehrere Amazon EC2 EC2-Instances) die Fragmente parallel mithilfe von abrufen und parallel verarbeiten lassen. `GetMediaFromFragmentList`

Die folgende Abbildung zeigt den Datenfluss für Fragmente und Datenblöcke im Rahmen dieser API-Aufrufe.

![\[Abbildung, die den Datenfluss für Fragmente und Datenblöcke in API-Aufrufen zeigt\]](http://docs.aws.amazon.com/de_de/kinesisvideostreams/latest/dg/images/arch-20.png)


Wenn ein Produzent eine `PutMedia`-Anforderung sendet, sendet er die Medienmetadaten in der Nutzlast und dann eine Folge von Mediendatenfragmenten. Nach dem Empfang der Daten speichert Kinesis Video Streams eingehende Mediendaten als Kinesis Video Streams Streams-Chunks. Jeder Datenblock umfasst Folgendes:
+ Eine Kopie der Medienmetadaten
+ Ein Fragment
+ Kinesis Video Streams-spezifische Metadaten, z. B. die Fragmentnummer und serverseitige und produzentenseitige Zeitstempel

Wenn ein Verbraucher Medienmetadaten anfordert, gibt Kinesis Video Streams einen Stream von Chunks zurück, beginnend mit der Fragmentnummer, die Sie in der Anfrage angeben.

Wenn Sie die Datenpersistenz für den Stream aktivieren, speichert Kinesis Video Streams nach dem Empfang eines Fragments im Stream auch eine Kopie des Fragments im Datenspeicher. 

## Muster für die Erkennung von Endpunkten
<a name="how-it-works-api-pattern"></a>

**REST der Steuerungsebene APIs**

Verwenden Sie die [Kinesis Video Streams [Streams-Dienstendpunkte APIs, um auf den REST der Kinesis Video Streams Streams-Kontrollebene](https://docs.aws.amazon.com//general/latest/gr/akv.html#akv_region)](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/API_Operations_Amazon_Kinesis_Video_Streams.html) zuzugreifen.

**REST der Datenebene APIs**

Kinesis Video Streams basiert auf einer [Mobilfunkarchitektur](https://docs.aws.amazon.com//wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/what-is-a-cell-based-architecture.html), um eine bessere Skalierung und Isolierung des Datenverkehrs zu gewährleisten. Da jeder Stream einer bestimmten Zelle in einer Region zugeordnet ist, muss Ihre Anwendung die richtigen zellenspezifischen Endpunkte verwenden, denen Ihr Stream zugeordnet wurde. Wenn Sie auf die Datenebene REST zugreifen APIs, müssen Sie die richtigen Endpunkte selbst verwalten und zuordnen. Dieser Prozess, das Endpoint Discovery Pattern, wird im Folgenden beschrieben:

1. Das Endpoint Discovery Pattern beginnt mit dem Aufruf einer der `GetEndpoints` Aktionen. Diese Aktionen gehören zur Kontrollebene.

   1. Wenn Sie die Endpunkte für die [Amazon Kinesis Video Streams — Archivierte Medien](API_Operations_Amazon_Kinesis_Video_Streams_Archived_Media.md) Dienste [Amazon Kinesis Video Streams Streams-Medien](API_Operations_Amazon_Kinesis_Video_Streams_Media.md) oder abrufen, verwenden Sie. [GetDataEndpoint](API_GetDataEndpoint.md)

   1. Wenn Sie die Endpunkte für[Amazon Kinesis Kinesis-Videosignalkanäle](API_Operations_Amazon_Kinesis_Video_Signaling_Channels.md), oder [Kinesis Video Signaling](https://docs.aws.amazon.com//kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-websocket-apis.html) abrufen[Amazon Kinesis Video WebRTC-Speicher](API_Operations_Amazon_Kinesis_Video_WebRTC_Storage.md), verwenden Sie. [GetSignalingChannelEndpoint](API_GetSignalingChannelEndpoint.md)

1. Zwischenspeichern Sie den Endpunkt und verwenden Sie ihn erneut.

1. Wenn der zwischengespeicherte Endpunkt nicht mehr funktioniert, rufen Sie erneut auf, um den Endpunkt `GetEndpoints` zu aktualisieren.

## Producer-Bibliotheken
<a name="how-it-works-producer-sdk"></a>

Nachdem Sie einen Kinesis-Videostream erstellt haben, können Sie damit beginnen, Daten an den Stream zu senden. In Ihrem Anwendungscode können Sie diese Bibliotheken verwenden, um Daten aus Ihren Medienquellen zu extrahieren und in Ihren Kinesis-Videostream hochzuladen. Weitere Informationen zu den verfügbaren Producer-Bibliotheken finden Sie unter [Zu Kinesis Video Streams hochladen](producer-sdk.md).

# Kinesis Video Streams Streams-Datenmodell
<a name="how-data"></a>

Das [Zu Kinesis Video Streams hochladen](producer-sdk.md) und die [Sehen Sie sich die Ausgabe von Kameras mithilfe der Parser-Bibliothek an](parser-library.md) 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](https://en.wikipedia.org/wiki/Matroska) 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 [Zu Kinesis Video Streams hochladen](producer-sdk.md) 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](https://www.matroska.org/technical/specs/index.html).

Die folgenden Abschnitte beschreiben die Komponenten von vom [C\$1\$1](producer-sdk-cpp.md) erzeugten Daten im MKV-Format.

**Topics**
+ [Stream-Header-Elemente](#how-data-header-streamdefinition)
+ [Streamen Sie Track-Daten](#how-data-header-streamtrack)
+ [Frame-Header-Elemente](#how-data-header-frame)
+ [MKV-Frame-Daten](#how-data-frame)

## Stream-Header-Elemente
<a name="how-data-header-streamdefinition"></a>

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


****  

| Element | Description | Typische Werte | 
| --- | --- | --- | 
| stream\$1name | Entspricht dem Namen des Kinesis-Videostreams. | my-stream | 
| retention\$1period | 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-Managementkonsole angezeigt und können von Clientanwendungen gelesen werden, um eine Filterung durchzuführen oder Informationen zu einem Stream abzurufen. |  | 
| kms\$1key\$1id | 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\$1type | Derzeit ist der einzige gültige Streaming-Typ STREAMING\$1TYPE\$1REALTIME. | STREAMING\$1TYPE\$1REALTIME | 
| content\$1type | Der benutzerdefinierte Inhaltstyp. Damit gestreamte Videodaten in der Konsole abgespielt werden können, muss der Typ video/h264 lauten. | video/h264 | 
| max\$1latency | Dieser Wert wird derzeit nicht verwendet und sollte auf 0 gesetzt werden. | 0 | 
| fragment\$1duration | Dies ist eine Schätzung der Fragmentdauer und wird zur Optimierung verwendet. Die tatsächliche Fragmentdauer wird durch die Streaming-Daten bestimmt. | 2 | 
| timecode\$1scale | Gibt die von Frame-Timestamps verwendete Skala an. 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](https://matroska.org/technical/specs/notes.html#TimecodeScale)in der Matroska-Dokumentation. |  | 
| key\$1frame\$1fragmentation | Bei der Einstellung true startet der Stream einen neuen Cluster, wenn ein Keyframe empfangen wird. | true | 
| frame\$1timecodes | 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\$1fragment\$1time |  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\$1acks |  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\$1on\$1error | Gibt an, ob der Stream die Übertragung nach einem Fehler fortsetzen soll. | true | 
| nal\$1adaptation\$1flags | Gibt an, ob der Inhalt NAL (Network Abstraction Layer)-Adaptions- oder Codec-interne Daten enthält. Gültige Flags sind NAL\$1ADAPTATION\$1ANNEXB\$1NALS und NAL\$1ADAPTATION\$1ANNEXB\$1CPD\$1NALS. | NAL\$1ADAPTATION\$1ANNEXB\$1NALS | 
| frame\$1rate | 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\$1bandwidth\$1bps | 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\$1duration | 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\$1duration | 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\$1staleness | Die Zeitspanne, die eine Verbindung aufrechterhalten wird, wenn keine Daten eingehen. |  | 
| codec\$1id | Der von dem Inhalt verwendete Codec. Weitere Informationen finden Sie unter [CodecID](https://matroska.org/technical/specs/codecid/index.html) in der Matroska-Spezifikation. | V\$1 MPEG2 | 
| track\$1name | Der benutzerdefinierte Name des Tracks | my\$1track | 
| 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\$1\$1-Producer-Bibliothek](producer-sdk-cpp.md) 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\$1type | Der Typ des Tracks für den Stream. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO oder MKV\$1TRACK\$1INFO\$1TYPE\$1VIDEO | 
| segment\$1uuid | Benutzerdefinierte Segment-UUID (16 Bytes). |  | 
| default\$1track\$1id | Eindeutige Zahl ungleich Null für den Track. | 1 | 

## Streamen Sie Track-Daten
<a name="how-data-header-streamtrack"></a>

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


****  

| Element | Description | Typische Werte | 
| --- | --- | --- | 
| track\$1name | Benutzerdefinierter Track-Name. Beispiel: "Audio" für die Audiospur.  | audio | 
| codec\$1id | Codec-ID für den Track. Beispiel: "A\$1AAC" für eine Audiospur. | A\$1AAC | 
| 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\$1\$1-Producer-Bibliothek](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/producer-sdk-cpp.html) enthält das gMkvTrack VideoBits Array in MkvStatics .cpp die Pixelbreite und -höhe für den Frame.  |  | 
| cpd\$1size | Die Größe der Daten im codecPrivateData Parameter. |  | 
| track\$1type | Der Typ des Tracks. Beispielsweise können Sie den Aufzählungswert MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO für die Audioverarbeitung auswählen. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO | 

## Frame-Header-Elemente
<a name="how-data-header-frame"></a>

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.
+ **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
<a name="how-data-frame"></a>

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](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC) codiert sein. Kinesis Video Streams kann jedoch zeitserialisierte Datenströme in jedem Format empfangen.