

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.

# Verwenden von Streaming-Metadaten mit Kinesis Video Streams
<a name="how-meta"></a>

Sie können das Amazon Kinesis Video Streams Producer SDK verwenden, um Metadaten auf der Ebene einzelner Fragmente in einen Kinesis-Videostream einzubetten. Metadaten in Kinesis Video Streams sind ein veränderbares Schlüssel-Wert-Paar. Sie können es verwenden, um den Inhalt des Fragments zu beschreiben, zugehörige Sensormesswerte einzubetten, die zusammen mit dem eigentlichen Fragment übertragen werden müssen, oder um andere benutzerdefinierte Anforderungen zu erfüllen. Die Metadaten werden als Teil der API-Operationen [GetMedia](API_dataplane_GetMedia.md) oder [GetMediaForFragmentList](API_reader_GetMediaForFragmentList.md) zur Verfügung gestellt. Es wird zusammen mit den Fragmenten für die gesamte Dauer der Aufbewahrungszeit des Streams gespeichert. Ihre nutzenden Anwendungen können anhand der Metadaten lesen, verarbeiten und darauf reagieren[Sehen Sie sich die Ausgabe von Kameras mithilfe der Parser-Bibliothek an](parser-library.md). 

Es gibt zwei Modi, in denen die Metadaten in Fragmente in einem Stream eingebettet werden können: 
+ **Nicht persistent** — Sie können Metadaten einmalig oder ad hoc an Fragmente in einem Stream anhängen, je nachdem, welche geschäftsspezifischen Kriterien erfüllt wurden. Ein Beispiel ist eine Smart-Kamera, die Bewegungen erkennt und Metadaten zu den entsprechenden Fragmenten hinzufügt, die die Bewegung enthalten, bevor sie die Fragmente an ihren Kinesis-Videostream sendet. Sie können Metadaten im folgenden Format auf das Fragment anwenden: `Motion = true`.
+ **Persistent** — Sie können je nach Bedarf Metadaten an aufeinanderfolgende Fragmente in einem Stream anhängen. Ein Beispiel ist eine Smart-Kamera, die die aktuellen Breiten- und Längengradkoordinaten aller Fragmente, die sie sendet, an ihren Kinesis-Videostream sendet. Sie können Metadaten im folgenden Format auf alle Fragmente anwenden: `Lat = 47.608013N , Long = -122.335167W`.

Sie können Metadaten je nach den Anforderungen Ihrer Anwendung in beiden Modi gleichzeitig an dasselbe Fragment binden. Die eingebetteten Metadaten können erkannte Objekte, nachverfolgte Aktivitäten, GPS-Koordinaten oder beliebige andere benutzerdefinierte Daten enthalten, die Sie an den Fragmenten im Stream zuordnen möchten. Metadaten sind als Schlüssel-Werte-Paare codiert.

## Hinzufügen von Metadaten zu einem Kinesis-Videostream
<a name="how-meta-add"></a>

Metadaten, die Sie einem Kinesis-Videostream hinzufügen, werden als MKV-Tags modelliert, die als Schlüssel-Wert-Paare implementiert werden. 

Metadaten können entweder *transient* sein, wie z. B. zur Markierung eines Elements innerhalb des Streams, oder *persistent*, wie z. B. zum Identifizieren von Fragmenten, bei denen ein bestimmtes Ereignis stattfindet. Ein persistentes Metadatenelement bleibt bestehen und wird auf jedes aufeinanderfolgende Fragment angewendet, bis es gelöscht wird.

**Anmerkung**  
Die mithilfe von hinzugefügten Metadatenelemente [Zu Kinesis Video Streams hochladen](producer-sdk.md) unterscheiden sich von dem Tagging auf Stream-Ebene, das mit[TagStream](API_TagStream.md), [UntagStream](API_UntagStream.md) und APIs implementiert wurde. [ListTagsForStream](API_ListTagsForStream.md)

### API für Streaming-Metadaten
<a name="how-meta-api"></a>

Sie können die folgenden Operationen im Producer-SDK verwenden, um Streaming-Metadaten zu implementieren.

**Topics**
+ [PIC](#how-meta-api-pic)
+ [C\+\+-Produzenten-SDK](#how-meta-api-cpp)
+ [SDK für Java-Produzenten](#how-meta-api-java)
+ [Persistente und nicht persistente Metadaten](#how-meta-api-persistence)

#### PIC
<a name="how-meta-api-pic"></a>

```
PUBLIC_API STATUS putKinesisVideoFragmentMetadata(STREAM_HANDLE streamHandle, 
    PCHAR name, 
    PCHAR value, 
    BOOL persistent);
```

#### C\+\+-Produzenten-SDK
<a name="how-meta-api-cpp"></a>

```
/**
 * Appends a "tag" or metadata - a key/value string pair into the stream.
 */
bool putFragmentMetadata(const std::string& name, const std::string& value, bool persistent = true);
```

#### SDK für Java-Produzenten
<a name="how-meta-api-java"></a>

Sie können das Java-Producer-SDK verwenden, um Metadaten zu einer `MediaSource` Anwendung hinzuzufügen`MediaSourceSink.onCodecPrivateData`:

```
void onFragmentMetadata(final @Nonnull String metadataName, final @Nonnull String metadataValue, final boolean persistent)
throws KinesisVideoException;
```

#### Persistente und nicht persistente Metadaten
<a name="how-meta-api-persistence"></a>

Für nicht persistente Metadaten können Sie mehrere Metadatenelemente mit demselben *Namen* hinzufügen. Das Producer-SDK sammelt die Metadatenelemente in der Metadaten-Warteschlange, bis sie dem nächsten Fragment vorangestellt werden. Die Metadaten-Warteschlange wird gelöscht, während Metadatenelemente auf den Stream angewendet werden. Um die Metadaten zu wiederholen, rufen Sie `putKinesisVideoFragmentMetadata` oder `putFragmentMetadata` erneut auf. 

Bei persistenten Metadaten sammelt das Producer-SDK die Metadatenelemente in der Metadatenwarteschlange auf dieselbe Weise wie bei nicht persistenten Metadaten. Die Metadatenelemente werden jedoch nicht aus der Warteschlange entfernt, wenn sie dem nächsten Fragment vorangestellt werden.

Wenn `putKinesisVideoFragmentMetadata` oder `putFragmentMetadata` mit `persistent` auf `true` eingestellt aufgerufen wird, bewirkt dies das folgende Verhalten: 
+ Durch Aufrufen der API wird das Metadatenelement in die Warteschlange eingefügt. Die Metadaten werden jedem Fragment als MKV-Tag hinzugefügt, während sich das Element in der Warteschlange befindet.
+ Wenn die API mit demselben *Namen* und einem anderen *Wert* als ein zuvor hinzugefügtes Metadatenelement aufgerufen wird, wird das Element überschrieben.
+ Wenn die API mit einem leeren *Wert* aufgerufen wird, wird das Metadatenelement aus der Metadaten-Warteschlange entfernt (storniert).

