

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.

# Beispiele für Amazon Kinesis Video Streams
<a name="examples"></a>

Die folgenden Codebeispiele zeigen, wie Sie mit der Kinesis Video Streams Streams-API arbeiten:

## Beispiele: Daten an Kinesis Video Streams senden
<a name="examples-toc-producer"></a>
+ [Beispiel: GStreamer SDK-Plug-In für Kinesis Video Streams Producer — kvssink](examples-gstreamer-plugin.md): Zeigt, wie das Kinesis Video Streams Streams-Producer-SDK für die Verwendung als GStreamer Ziel erstellt wird.
+ [Führen Sie das GStreamer Element in einem Docker-Container aus](examples-gstreamer-plugin.md#examples-gstreamer-plugin-docker): Zeigt, wie Sie ein vorgefertigtes Docker-Image verwenden, um RTSP-Video (Real-Time Streaming Protocol) von einer IP-Kamera an Kinesis Video Streams zu senden.
+ [Beispiel: Streaming von einer RTSP-Quelle](examples-rtsp.md): Zeigt, wie Sie Ihr eigenes Docker-Image erstellen und RTSP-Video von einer IP-Kamera an Kinesis Video Streams senden.
+ [Beispiel: Senden von Daten an Kinesis Video Streams mithilfe der API PutMedia](examples-putmedia.md): Zeigt, wie Sie mithilfe der [Verwenden Sie die Java-Producer-Bibliothek](producer-sdk-javaapi.md) API Daten an Kinesis Video Streams senden können, die bereits in einem Containerformat (MKV) vorliegen. [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)

## Beispiele: Daten aus Kinesis Video Streams abrufen
<a name="examples-toc-consumer"></a>
+ [KinesisVideoExample](parser-library-write.md#parser-library-write-example): Zeigt, wie Videofragmente mithilfe der Kinesis Video Streams Parser Library analysiert und protokolliert werden.
+ [Beispiel: Analysieren und Rendern von Kinesis Video Streams Streams-Fragmenten](examples-renderer.md): Zeigt, wie Kinesis-Videostream-Fragmente mit [JCodec](http://jcodec.org/)und analysiert und gerendert werden. [JFrame](https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html)

## Beispiele: Wiedergeben von Videodaten
<a name="examples-toc-playback"></a>
+ [Beispiel: Verwenden Sie HLS in HTML und JavaScript](hls-playback.md#how-hls-ex1): Zeigt, wie eine HLS-Streaming-Sitzung für einen Kinesis-Videostream abgerufen und auf einer Webseite wiedergegeben wird.

## Voraussetzungen
<a name="examples-prerequisites"></a>
+ Im Beispielcode geben Sie Anmeldeinformationen an, indem Sie ein Profil angeben, das Sie in Ihrer Profildatei mit den AWS Anmeldeinformationen festgelegt haben, oder indem Sie Anmeldeinformationen in den Java-Systemeigenschaften Ihrer integrierten Entwicklungsumgebung (IDE) angeben. Falls Sie dies noch nicht getan haben, richten Sie zunächst Ihre Anmeldeinformationen ein. Weitere Informationen finden Sie unter [AWS Zugangsdaten und Region für die Entwicklung einrichten](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-credentials.html).
+ Wir empfehlen, eine der folgenden Java-IDEs zum Bearbeiten und Ausführen des Codes zu verwenden:
  + [Eclipse Java Neon](https://www.eclipse.org/downloads/packages/release/neon/3/eclipse-jee-neon-3)
  + [JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/)

# Beispiel: GStreamer SDK-Plug-In für Kinesis Video Streams Producer — kvssink
<a name="examples-gstreamer-plugin"></a>

In diesem Thema wird beschrieben, wie Sie das Amazon Kinesis Video Streams Streams-Producer-SDK zur Verwendung als GStreamer Plugin erstellen. 

**Topics**
+ [Laden Sie das GStreamer Element herunter, erstellen und konfigurieren Sie es](#examples-gstreamer-plugin-download)
+ [Führen Sie das Element aus GStreamer](#examples-gstreamer-plugin-run)
+ [Beispiele für Startbefehle GStreamer](#examples-gstreamer-plugin-launch)
+ [Führen Sie das GStreamer Element in einem Docker-Container aus](#examples-gstreamer-plugin-docker)
+ [GStreamer Referenz zu den Elementparametern](examples-gstreamer-plugin-parameters.md)

[GStreamer](https://gstreamer.freedesktop.org/)ist ein beliebtes Medien-Framework, das von mehreren Kameras und Videoquellen verwendet wird, um benutzerdefinierte Medien-Pipelines durch die Kombination modularer Plug-ins zu erstellen. Das Kinesis Video GStreamer Streams-Plugin optimiert die Integration Ihrer bestehenden GStreamer Medienpipeline mit Kinesis Video Streams. Nach der Integration GStreamer können Sie Videos von einer Webcam oder einer RTSP-Kamera (Real Time Streaming Protocol) an Kinesis Video Streams streamen, um sie in Echtzeit oder später wiederzugeben, zu speichern und weiter zu analysieren. 

Das GStreamer Plugin verwaltet automatisch die Übertragung Ihres Videostreams zu Kinesis Video Streams, indem es die vom Kinesis Video Streams Streams-Producer-SDK bereitgestellten Funktionen in einem GStreamer Senkenelement kapselt,. `kvssink` Das GStreamer Framework bietet eine verwaltete Standardumgebung für die Erstellung des Medienflusses von einem Gerät wie einer Kamera oder einer anderen Videoquelle zur weiteren Verarbeitung, zum Rendern oder Speichern. 

Die GStreamer Pipeline besteht in der Regel aus der Verbindung zwischen einer Quelle (Videokamera) und dem Senkenelement (entweder ein Player zum Rendern des Videos oder ein Speicher für den Offline-Abruf). In diesem Beispiel verwenden Sie das Producer SDK-Element als *Sink* bzw. Medienziel für die Videoquelle (Webcam oder IP-Kamera). Das Plugin-Element, das das SDK kapselt, sendet dann den Videostream an Kinesis Video Streams. 

In diesem Thema wird beschrieben, wie Sie eine GStreamer Medienpipeline aufbauen, die Video von einer Videoquelle streamen kann, z. B. einer Webkamera oder einem RTSP-Stream, die normalerweise über Zwischencodierungsstufen (mit H.264-Kodierung) mit Kinesis Video Streams verbunden sind. Wenn Ihr Videostream als Kinesis-Videostream verfügbar ist, können Sie ihn [Sehen Sie sich die Ausgabe von Kameras mithilfe der Parser-Bibliothek an](parser-library.md) für die weitere Verarbeitung, Wiedergabe, Speicherung oder Analyse Ihres Videostreams verwenden.

![\[Funktionale Ansicht der GStreamer Medienpipeline für das Streamen von Videos von einer Kamera zum Dienst.\]](http://docs.aws.amazon.com/de_de/kinesisvideostreams/latest/dg/images/gstreamer-pipeline.png)


## Laden Sie das GStreamer Element herunter, erstellen und konfigurieren Sie es
<a name="examples-gstreamer-plugin-download"></a>

Das GStreamer Plugin-Beispiel ist im C\$1\$1-Producer-SDK von Kinesis Video Streams enthalten. Weitere Informationen zu den Voraussetzungen und Downloadoptionen für das SDK finden Sie unter [Laden Sie den Code der C\$1\$1-Producer-Bibliothek herunter und konfigurieren Sie ihn](producersdk-cpp-download.md).

Sie können die GStreamer Producer-SDK-Senke als dynamische Bibliothek auf macOS, Ubuntu, Raspberry Pi oder Windows erstellen. Das GStreamer Plugin befindet sich in Ihrem `build` Verzeichnis. Um dieses Plugin zu laden, muss es sich in Ihrem befinden`GST_PLUGIN_PATH`. Führen Sie den folgenden Befehl aus:

```
export GST_PLUGIN_PATH=`pwd`/build
```

**Anmerkung**  
Unter macOS können Sie nur Videos von einer Netzwerk-Kamera streamen, wenn sie GStreamer in einem Docker-Container ausgeführt werden. Video-Streaming von einer USB-Kamera auf macOS in einem Docker-Container wird nicht unterstützt. 

## Führen Sie das Element aus GStreamer
<a name="examples-gstreamer-plugin-run"></a>

Verwenden Sie GStreamer den `gst-launch-1.0` Befehl, um das Producer-SDK-Element von Kinesis Video Streams als Senke zu verwenden. Verwenden Sie Upstream-Elemente, die für das zu verwendende GStreamer Plugin geeignet sind. Zum Beispiel [v4l2src](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) für v4l2-Geräte auf Linux-Systemen oder [rtspsrc](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page) für RTSP-Geräte. Geben Sie `kvssink` als Sink (Endziel der Pipeline) an, um Videos an das Producer SDK zu senden. 

Neben der [Bereitstellung von Anmeldeinformationen](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html#credentials-to-kvssink) und der [Angabe einer Region](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html#kvssink-region) hat das `kvssink` Element den folgenden erforderlichen Parameter:
+ `stream-name`— Der Name des Ziels Kinesis Video Streams.

Weitere Informationen zu optionalen `kvssink`-Parametern finden Sie unter [GStreamer Referenz zu den Elementparametern](examples-gstreamer-plugin-parameters.md).

Aktuelle Informationen zu GStreamer Plug-ins und Parametern finden Sie unter [GStreamer Plugins](https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c). Sie können auch den Namen eines GStreamer Elements oder Plugins verwenden`gst-inspect-1.0`, um dessen Informationen auszudrucken und zu überprüfen, ob es auf Ihrem Gerät verfügbar ist:

```
gst-inspect-1.0 kvssink
```

Wenn das Erstellen `kvssink` fehlgeschlagen ist oder GST\$1PLUGIN\$1PATH nicht richtig gesetzt ist, sieht Ihre Ausgabe ungefähr so aus:

```
No such element or plugin 'kvssink'
```

## Beispiele für Startbefehle GStreamer
<a name="examples-gstreamer-plugin-launch"></a>

Die folgenden Beispiele zeigen, wie Sie das `kvssink` GStreamer Plugin verwenden, um Videos von verschiedenen Gerätetypen zu streamen.

### Beispiel 1: Streamen Sie Video von einer RTSP-Kamera auf Ubuntu
<a name="examples-gstreamer-plugin-launch-ex1"></a>

Der folgende Befehl erstellt unter Ubuntu eine GStreamer Pipeline, die mithilfe des [ GStreamer rtspsrc-Plugins](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=c) von einer Netzwerk-RTSP-Kamera streamt:

```
gst-launch-1.0 -v rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name="YourStreamName" storage-size=128
```

### Beispiel 2: Video von einer USB-Kamera auf Ubuntu kodieren und streamen
<a name="examples-gstreamer-plugin-launch-ex2"></a>

Der folgende Befehl erstellt eine GStreamer Pipeline auf Ubuntu, die den Stream von einer USB-Kamera im H.264-Format codiert und an Kinesis Video Streams streamt. [In diesem Beispiel wird das v4l2src-Plugin verwendet.](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) GStreamer 

```
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! x264enc  bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### Beispiel 3: Streamen Sie vorcodiertes Video von einer USB-Kamera auf Ubuntu
<a name="examples-gstreamer-plugin-launch-ex3"></a>

Mit dem folgenden Befehl wird auf Ubuntu eine GStreamer Pipeline erstellt, die Videos, die die Kamera bereits im H.264-Format codiert hat, an Kinesis Video Streams streamt. [In diesem Beispiel wird das v4l2src-Plugin verwendet.](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) GStreamer 

```
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### Beispiel 4: Video von einer Netzwerk-Kamera auf macOS streamen
<a name="examples-gstreamer-plugin-launch-ex4"></a>

Mit dem folgenden Befehl wird auf macOS eine GStreamer Pipeline erstellt, die Video von einer Netzwerkkamera zu Kinesis Video Streams streamt. In diesem Beispiel wird das [ GStreamer rtspsrc-Plugin](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page) verwendet.

```
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512  access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### Beispiel 5: Streamen Sie Video von einer Netzwerk-Kamera unter Windows
<a name="examples-gstreamer-plugin-launch-ex5"></a>

Mit dem folgenden Befehl wird unter Windows eine GStreamer Pipeline erstellt, die Video von einer Netzwerk-Kamera zu Kinesis Video Streams streamt. In diesem Beispiel wird das [ GStreamer rtspsrc-Plugin](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page) verwendet.

```
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512  access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### Beispiel 6: Streamen Sie Video von einer Kamera auf dem Raspberry Pi
<a name="examples-gstreamer-plugin-launch-ex6"></a>

Der folgende Befehl erstellt eine GStreamer Pipeline auf dem Raspberry Pi, die Video an Kinesis Video Streams streamt. In diesem Beispiel wird das [ GStreamer v4l2src-Plugin](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) verwendet.

```
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### Beispiel 7: Streamen Sie sowohl Audio als auch Video in Raspberry Pi und Ubuntu
<a name="examples-gstreamer-plugin-launch-ex7"></a>

Erfahren Sie, wie Sie den [gst-launch-1.0-Befehl ausführen, um das Streamen von Audio und Video in Raspberry Pi und Ubuntu zu starten](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/linux.md#running-the-gst-launch-10-command-to-start-streaming-both-audio-and-video-in-raspberry-pi-and-ubuntu).

### Beispiel 8: Streamen Sie sowohl Audio als auch Video von Gerätequellen in macOS
<a name="examples-gstreamer-plugin-launch-ex8"></a>

Erfahren Sie, wie Sie den [gst-launch-1.0-Befehl ausführen, um das Streamen von Audio und Video in MacOS zu starten](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/macos.md#running-the-gst-launch-10-command-to-start-streaming-both-audio-and-raw-video-in-mac-os).

### Beispiel 9: Laden Sie eine MKV-Datei hoch, die sowohl Audio als auch Video enthält
<a name="examples-gstreamer-plugin-launch-ex9"></a>

Erfahren Sie, wie Sie den [Befehl gst-launch-1.0 ausführen, um eine MKV-Datei hochzuladen, die sowohl Audio als auch Video enthält](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/windows.md#running-the-gst-launch-10-command-to-upload-mkv-file-that-contains-both-audio-and-video). Sie benötigen eine MKV-Testdatei mit h.264- und AAC-codierten Medien.

## Führen Sie das GStreamer Element in einem Docker-Container aus
<a name="examples-gstreamer-plugin-docker"></a>

Docker ist eine Plattform für die Entwicklung, Bereitstellung und das Ausführen von Anwendungen mithilfe von Containern. Durch die Verwendung von Docker zur Erstellung der GStreamer Pipeline wird die Betriebsumgebung für Kinesis Video Streams standardisiert, was die Erstellung und Verwendung der Anwendung optimiert.

So installieren und konfigurieren Sie Docker:
+ [Anleitung zum Herunterladen von Docker](https://docs.docker.com/engine/install/)
+ [Erste Schritte mit Docker](https://docs.docker.com/guides/getting-started/)

Nach der Installation von Docker können Sie das Kinesis Video Streams C\$1\$1 Producer SDK (und das GStreamer Plugin) mit einem der unten angegebenen `docker pull` Befehle aus der Amazon Elastic Container Registry herunterladen.

Gehen Sie wie GStreamer folgt vor, um das Producer-SDK-Element von Kinesis Video Streams als Senke in einem Docker-Container auszuführen:

**Topics**
+ [Authentifizieren Sie Ihren Docker-Client](#examples-gstreamer-plugin-docker-authenticate)
+ [Herunterladen des Docker-Images für Ubuntu, macOS, Windows oder Raspberry Pi](#examples-gstreamer-plugin-docker-download)
+ [Führen Sie das Docker-Image aus](#examples-gstreamer-plugin-docker-run)

### Authentifizieren Sie Ihren Docker-Client
<a name="examples-gstreamer-plugin-docker-authenticate"></a>

Authentifizieren Sie Ihren Docker-Client bei der Amazon-ECR-Registrierung, aus der Sie Ihr Image abrufen möchten. Sie müssen Authentifizierungstoken für jede verwendete Registrierung abrufen. Tokens sind 12 Stunden gültig. Weitere Informationen finden Sie unter [Registry-Authentifizierung](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth) im *Benutzerhandbuch zu Amazon-Elastic-Container-Registry*.

**Example : Authentifizieren mit Amazon ECR**  
Um sich bei Amazon ECR zu authentifizieren, kopieren Sie den folgenden Befehl und fügen Sie ihn wie gezeigt ein.  

```
sudo aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com
```
Bei erfolgreicher Ausführung wird als Ausgabe `Login Succeeded` gedruckt.

### Herunterladen des Docker-Images für Ubuntu, macOS, Windows oder Raspberry Pi
<a name="examples-gstreamer-plugin-docker-download"></a>

Verwenden Sie zum Herunterladen des Docker-Images in Ihre Docker-Umgebung abhängig vom verwendeten Betriebssystem einen der folgenden Befehle:

#### Herunterladen des Docker-Images für Ubuntu
<a name="examples-gstreamer-plugin-docker-download-ubuntu"></a>

```
sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
```

#### Herunterladen des Docker-Images für macOS
<a name="examples-gstreamer-plugin-docker-download-macos"></a>

```
docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
```

#### Herunterladen des Docker-Images für Windows
<a name="examples-gstreamer-plugin-docker-download-windows"></a>

```
docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest
```

#### Herunterladen des Docker-Images für Raspberry Pi
<a name="examples-gstreamer-plugin-docker-download-rpi"></a>

```
sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest
```

Verwenden Sie den folgenden Befehl, um zu überprüfen, dass das Image erfolgreich hinzugefügt wurde:

```
docker images
```

### Führen Sie das Docker-Image aus
<a name="examples-gstreamer-plugin-docker-run"></a>

Führen Sie abhängig vom verwendeten Betriebssystem einen der folgenden Befehle aus, um das Docker-Image auszuführen:

#### Führen Sie das Docker-Image auf Ubuntu aus
<a name="examples-gstreamer-plugin-docker-run-ubuntu"></a>

```
sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
```

#### Führen Sie das Docker-Image auf macOS aus
<a name="examples-gstreamer-plugin-docker-run-macos"></a>

```
sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
```

#### Führen Sie das Docker-Image unter Windows aus
<a name="examples-gstreamer-plugin-docker-run-windows"></a>

```
docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY RTSP_URL STREAM_NAME
```

#### Führen Sie das Docker-Image auf Raspberry Pi aus
<a name="examples-gstreamer-plugin-docker-run-rpi"></a>

```
sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash
```

Docker startet den Container und zeigt Ihnen eine Eingabeaufforderung für die Verwendung von Befehlen innerhalb des Containers.

Legen Sie im Container die Umgebungsvariablen mit dem folgenden Befehl fest:

```
export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH
export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH
export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH
```

Starten Sie das Streaming, um `kvssink` mithilfe der `gst-launch-1.0` eine Pipeline auszuführen, die für Ihr Gerät und Ihre Videoquelle geeignet ist. Beispiele für Pipelines finden Sie unter[Beispiele für Startbefehle GStreamer](#examples-gstreamer-plugin-launch).

# GStreamer Referenz zu den Elementparametern
<a name="examples-gstreamer-plugin-parameters"></a>

Um Video an das C\$1\$1-SDK von Amazon Kinesis Video Streams Producer zu senden, geben Sie es `kvssink` als *Senke* oder Endziel der Pipeline an. Diese Referenz enthält Informationen zu den erforderlichen und optionalen `kvssink`-Parametern. Weitere Informationen finden Sie unter [Beispiel: GStreamer SDK-Plug-In für Kinesis Video Streams Producer — kvssink](examples-gstreamer-plugin.md).

**Topics**
+ [Geben Sie Anmeldeinformationen ein für `kvssink`](#credentials-to-kvssink)
+ [Geben Sie eine Region an `kvssink`](#kvssink-region)
+ [`kvssink`optionale Parameter](#kvssink-optional-parameters)

## Geben Sie Anmeldeinformationen ein für `kvssink`
<a name="credentials-to-kvssink"></a>

Damit das `kvssink` GStreamer Element Anfragen stellen kann AWS, müssen Sie AWS Anmeldeinformationen angeben, die es beim Aufrufen des Amazon Kinesis Video Streams Streams-Service verwenden soll. Die Anbieterkette für Anmeldeinformationen sucht in der folgenden Reihenfolge nach Anmeldeinformationen:

### 1. AWS IoT Referenzen
<a name="collapsible-section-1"></a>

Informationen zum Einrichten von AWS IoT Anmeldeinformationen finden Sie unter[Steuern des Zugriffs auf Kinesis Video Streams Streams-Ressourcen mithilfe von AWS IoT](how-iot.md).

Der `iot-credentials` Parameterwert muss mit einer kommagetrennten Liste der folgenden *key* *value* =-Paare beginnen `iot-certificate,` und darauf folgen.


****  

| Key (Schlüssel) | Erforderlich | Beschreibung | 
| --- | --- | --- | 
| ca-path | Ja | Dateipfad zum CA-Zertifikat, das verwendet wird, um über TLS eine Vertrauensstellung mit dem Back-End-Dienst herzustellen. 

**Example**  
**Beispiel**: ` /file/path/to/certificate.pem` | 
| cert-path | Ja | Dateipfad zum X.509-Zertifikat.  

**Example**  
**Beispiel**: `/file/path/to/certificateID-certificate.pem.crt` | 
| endpoint | Ja | Der Endpoint Provider-Endpunkt für AWS IoT Core Anmeldeinformationen für Ihr AWS Konto. Weitere Informationen finden Sie im [AWS IoT Entwicklerhandbuch](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html). 

**Example**  
**Beispiel**: `credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com` | 
| key-path | Ja | Dateipfad zu dem privaten Schlüssel, der im public/private key pair verwendet wird.  

**Example**  
**Beispiel**: `/file/path/to/certificateID-private.pem.key` | 
| role-aliases | Ja | Der Name des Rollenalias, der auf die AWS IAM-Rolle verweist, mit der eine Verbindung hergestellt werden soll AWS IoT Core.  

**Example**  
**Beispiel**: `KvsCameraIoTRoleAlias` | 
| iot-thing-name | Nein | Die `iot-thing-name` ist optional. Wenn nicht angegeben, `iot-thing-name` wird der `stream-name` Parameterwert verwendet. 

**Example**  
**Beispiel**: `kvs_example_camera` | 

**Example**  
**Beispiel:**  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=certificateID-certificate.pem.crt,key-path=certificateID-private.pem.key,ca-path=certificate.pem,role-aliases=YourRoleAlias,iot-thing-name=YourThingName"
```

### 2. Umgebungsvariablen
<a name="collapsible-section-2"></a>

Um Anmeldeinformationen aus der Umgebung `kvssink` verwenden zu können, legen Sie die folgenden Umgebungsvariablen fest:


****  

| Name der Umgebungsvariablen | Erforderlich | Beschreibung | 
| --- | --- | --- | 
| AWS\$1ACCESS\$1KEY\$1ID | Ja | Der AWS Zugriffsschlüssel, der für den Zugriff auf Amazon Kinesis Video Streams verwendet wird. | 
| AWS\$1SECRET\$1ACCESS\$1KEY | Ja | Der AWS geheime Schlüssel, der dem Zugriffsschlüssel zugeordnet ist. | 
| AWS\$1SESSION\$1TOKEN | Nein | Gibt den erforderlichen Wert für das Sitzungstoken an, wenn Sie temporäre Sicherheitsanmeldeinformationen direkt aus AWS STS Vorgängen verwenden. | 

Durch die Festlegung der Umgebungsvariablen wird der verwendete Wert bis zum Ende der Shell-Sitzung oder bis zur Festlegung eines anderen Wertes für die Variable geändert. Um die Variablen für future Sitzungen persistent zu machen, legen Sie sie im Startskript Ihrer Shell fest.

### 3. `access-key`, `secret-key` Parameter
<a name="collapsible-section-3"></a>

Um Anmeldeinformationen direkt als `kvssink` Parameter anzugeben, legen Sie die folgenden Parameter fest:


****  

| `kvssink`Name des Parameters | Erforderlich | Beschreibung | 
| --- | --- | --- | 
| access-key | Ja | Der AWS Zugriffsschlüssel, der für den Zugriff auf Amazon Kinesis Video Streams verwendet wird. | 
| secret-key | Ja | Der AWS geheime Schlüssel, der dem Zugriffsschlüssel zugeordnet ist. | 
| session-token | Nein | Gibt den erforderlichen Wert für das Sitzungstoken an, wenn Sie temporäre Sicherheitsanmeldeinformationen direkt aus AWS STS Vorgängen verwenden. | 

**Example**  
**Verwenden statischer Anmeldeinformationen:**  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" access-key="AKIDEXAMPLE" secret-key="SKEXAMPLE"
```

**Example**  
**Temporäre Anmeldeinformationen verwenden:**  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" access-key="AKIDEXAMPLE" secret-key="SKEXAMPLE" session-token="STEXAMPLE"
```

### 4. Datei mit Anmeldeinformationen
<a name="collapsible-section-4"></a>

**Wichtig**  
Wenn Sie eine der vorherigen Methoden ausgewählt haben, können Sie den `credential-path` `kvssink` Parameter nicht verwenden.


****  

| `kvssink`Name des Parameters | Erforderlich | Beschreibung | 
| --- | --- | --- | 
| credential-path | Ja | Pfad zur Textdatei, die Anmeldeinformationen in einem bestimmten Format enthält. | 

Die Textdatei muss Anmeldeinformationen in einem der folgenden Formate enthalten:
+ ANMELDEINFORMATIONEN *YourAccessKey* *YourSecretKey*
+ REFERENZEN *YourAccessKey* *Expiration* *YourSecretKey* *SessionToken*

**Example**  
**Beispiel:** Ihre `credentials.txt` Datei befindet sich unter `/home/ubuntu` und enthält Folgendes:   
`CREDENTIALS AKIDEXAMPLE 2023-08-10T22:43:00Z SKEXAMPLE STEXAMPLE`  
Um sie in zu verwenden`kvssink`, geben Sie Folgendes ein:   

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" credential-path="/home/ubuntu/credentials.txt" 
```
Die Ablaufzeit sollte in future mindestens 5 \$1 30 \$1 3 = **38** Sekunden betragen. Die Kulanzzeit ist definiert als die `IOT_CREDENTIAL_FETCH_GRACE_PERIOD` Variable in [https://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/src/source/Common/IotCredentialProvider.h](https://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/src/source/Common/IotCredentialProvider.h). Wenn die Anmeldeinformationen beim Start zu kurz vor dem Ablauf liegen`kvssink`, erhalten Sie den Fehlercode`0x52000049 - STATUS_INVALID_TOKEN_EXPIRATION`.
`kvssink`ändert die Datei mit den Anmeldeinformationen nicht. Wenn Sie temporäre Anmeldeinformationen verwenden, muss die Anmeldeinformationsdatei vor Ablauf der Ablaufzeit abzüglich der Kulanzzeit von einer externen Quelle aktualisiert werden. 

## Geben Sie eine Region an `kvssink`
<a name="kvssink-region"></a>

Die Reihenfolge der Suche nach Regionen ist wie folgt:

1. `AWS_DEFAULT_REGION`Die Umgebungsvariable wird zuerst überprüft. Wenn sie gesetzt ist, wird diese Region zur Konfiguration des Clients verwendet.

1. `aws-region`Der Parameter wird als Nächstes überprüft. Wenn er gesetzt ist, wird diese Region zur Konfiguration des Clients verwendet.

1. Wenn keine der vorherigen Methoden verwendet wurde, ist die `kvssink` Standardeinstellung. `us-west-2` 

## `kvssink`optionale Parameter
<a name="kvssink-optional-parameters"></a>

Das Element `kvssink` hat die folgenden optionalen Parameter. Weitere Informationen zu diesen Parametern finden Sie unter [Kinesis-Videostream-Strukturen](producer-reference-structures-stream.md).


****  

| Parameter | Description | Einheit/Typ | Standard | 
| --- | --- | --- | --- | 
| stream-name  | Der Name des Amazon Kinesis Kinesis-Ziel-Videostreams.  Wenn kein Streamname angegeben ist, wird der Standard-Streamname verwendet: „DEFAULT\$1STREAM“. Falls ein Stream mit diesem Standardnamen noch nicht existiert, wird er erstellt.  |  |  | 
| absolute-fragment-times | Gibt an, ob absolute Fragmentzeiten verwendet werden. | Boolesch | true | 
| access-key | Der AWS Zugriffsschlüssel, der für den Zugriff auf Kinesis Video Streams verwendet wird.  Sie müssen entweder AWS Anmeldeinformationen festgelegt haben oder diesen Parameter angeben. Geben Sie Folgendes ein, um diese Informationen bereitzustellen: <pre>export AWS_ACCESS_KEY_ID=</pre> |  |  | 
| avg-bandwidth-bps | Die erwartete durchschnittliche Bandbreite für den Stream.  | Bits pro Sekunde | 4194304 | 
| aws-region | Die AWS-Region zu verwendenden.  Sie können der Region auch die `AWS_DEFAULT_REGION` Umgebungsvariable zur Verfügung stellen. Die Umgebungsvariablen haben Vorrang, wenn sowohl die Umgebungsvariable als auch die Parameter kvssink gesetzt sind.   Die Region wird standardmäßig verwendet, `us-west-2` sofern nicht anders angegeben.   | Zeichenfolge | "us-west-2" | 
| buffer-duration | Laufzeit des Streampuffers  | Sekunden | 120 | 
| codec-id | Die Codec-ID des Streams | Zeichenfolge | "V\$1MPEG4/ISO/AVC" | 
| connection-staleness | Die Zeit nach der der Stream Staleness Callback aufgerufen wird. | Sekunden | 60 | 
| content-type | Der Inhaltstyp des Streams | Zeichenfolge | "video/h264" | 
| fragment-acks | Ob Fragment verwendet werden soll. ACKs | Boolesch | true | 
| fragment-duration | Die gewünschte Fragmentdauer | Millisekunden | 2000 | 
| framerate | Die erwartete Bildrate. | Frames pro Sekunde | 25 | 
| frame-timecodes | Verwendung von Frame-Timecodes oder Generieren von Zeitstempeln mit dem aktuellen Zeit-Callback:  | Boolesch | true | 
| key-frame-fragmentation | Gibt an, ob Fragmente für einen Keyframe erstellt werden. | Boolesch | true | 
| log-config | Der Protokollkonfigurationspfad | Zeichenfolge | "../kvs\$1log\$1configuration" | 
| max-latency | Die maximale Latenz für den Stream | Sekunden | 60 | 
| recalculate-metrics | Gibt an, ob die Metriken neu berechnet werden. | Boolesch | true | 
| replay-duration | Die Laufzeit, um die der aktuelle Reader bei Auftreten eines Fehlers "zurückgespult" werden muss, um die Wiedergabe zu wiederholen | Sekunden | 40 | 
| restart-on-error | Gibt an, ob beim Auftreten von Fehlern ein Neustart ausgeführt wird. | Boolesch | true | 
| retention-period | Die Zeitdauer, für die der Stream aufbewahrt wird | Stunden | 2 | 
| rotation-period | Der Schlüsselrotationszeitraum. Weitere Informationen finden Sie unter [Rotierende AWS KMS Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html). | Sekunden | 3600 | 
| secret-key |  Der AWS geheime Schlüssel, der für den Zugriff auf Kinesis Video Streams verwendet wird. Sie müssen entweder AWS Anmeldeinformationen festgelegt haben oder diesen Parameter angeben. <pre>export AWS_SECRET_ACCESS_KEY=</pre>  |  |  | 
| session-token | Gibt den erforderlichen Wert für das Sitzungstoken an, wenn Sie temporäre Sicherheitsanmeldeinformationen direkt aus AWS STS Vorgängen verwenden. |  |  | 
| storage-size | Die Gerätespeichergröße in Mebibyte (MiB). Weitere Informationen zum Konfigurieren von Speichergeräten finden Sie unter [StorageInfo](producer-reference-structures-producer.md#producer-reference-structures-producer-storageinfo). | Mebibyte (MiB) | 128 | 
| streaming-type | Der Streaming-Typ. Gültige Werte sind: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html) | Enum GstKvsSinkStreamingType | 0: Echtzeit | 
| timecode-scale | Die MKV-Timecode-Skala | Millisekunden | 1 | 
| track-name | Der Name des MKV-Tracks. | Zeichenfolge | "kinesis\$1video" | 
| iot-certificate | AWS IoT Anmeldeinformationen, die im `kvssink` Element verwendet werden sollen.  `iot-certificate`akzeptiert die folgenden Schlüssel und Werte:   Das `iot-thing-name` ist **optional**. Wenn nicht angegeben, `iot-thing-name` wird der `stream-name` Parameterwert verwendet.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html) | Zeichenfolge | Keine | 

# Beispiel: Senden von Daten an Kinesis Video Streams mithilfe der API PutMedia
<a name="examples-putmedia"></a>

Dieses Beispiel zeigt, wie die [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)API verwendet wird. Es zeigt, wie Daten gesendet werden, die bereits in einem Containerformat (MKV) vorliegen. Wenn Ihre Daten vor dem Senden in ein Containerformat zusammengestellt werden müssen (z. B. wenn Sie Kameravideodaten in Frames zusammenfügen), finden Sie weitere Informationen unter. [Zu Kinesis Video Streams hochladen](producer-sdk.md)

**Anmerkung**  
Die `PutMedia` Operation ist nur in C\$1\$1 und Java SDKs verfügbar. Dies ist auf die Vollduplex-Verwaltung von Verbindungen, Datenfluss und Bestätigungen zurückzuführen. Es wird in anderen Sprachen nicht unterstützt.

**Topics**
+ [Laden Sie den Code herunter und konfigurieren Sie ihn](#examples-putmedia-download)
+ [Schreiben und untersuchen Sie den Code](#examples-putmedia-write)
+ [Führen Sie den Code aus und überprüfen Sie ihn](#examples-putmedia-run)

## Laden Sie den Code herunter und konfigurieren Sie ihn
<a name="examples-putmedia-download"></a>

Folgen Sie den Schritten, um den Java-Beispielcode herunterzuladen, das Projekt in Ihre Java-IDE zu importieren, die Bibliotheksspeicherorte zu konfigurieren und den Code so zu konfigurieren, dass er Ihre AWS Anmeldeinformationen verwendet.

1. Erstellen Sie ein Verzeichnis und klonen Sie den Beispielquellcode aus dem GitHub Repository. Das `PutMedia`-Beispiel ist Bestandteil der [Java](producer-sdk-javaapi.md).

   ```
   git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
   ```

1. Öffnen Sie die Java-IDE, die Sie verwenden (z. B. [Eclipse](https://www.eclipse.org/) oder [IntelliJ IDEA](https://www.jetbrains.com/idea/)), und importieren Sie das Apache Maven-Projekt, das Sie heruntergeladen haben: 
   + **In Eclipse:** Klicken Sie auf **File** (Datei), **Import** (Importieren), **Maven**, **Existing Maven Projects** (Vorhandene Maven-Projekte) und navigieren Sie zum Stammverzeichnis des heruntergeladenen Pakets. Wählen Sie die `pom.xml`-Datei aus.
   + **In IntelliJ Idea: ** Klicken Sie auf **Import**. Navigieren Sie zur Datei `pom.xml` im Stammverzeichnis des heruntergeladenen Pakets.

    Weitere Informationen finden Sie in der Dokumentation zur IDE.

1. Aktualisieren Sie das Projekt, damit die IDE die importierten Bibliotheken findet.
   + Gehen Sie bei IntelliJ IDEA wie folgt vor:

     1. Klicken Sie mit der rechten Maustaste auf das Verzeichnis **lib** des Projekts und wählen Sie **Add as library**.

     1. **Wählen Sie „**Datei**“ und anschließend „Projektstruktur“.** 

     1. Wählen Sie unter **Project Settings** die Option **Modules** aus. 

     1. Stellen Sie auf der Registerkarte **Sources (Quellen)** die Option **Language Level (Sprachebene)** auf **7** oder einen höheren Wert ein.
   + Gehen Sie bei Eclipse wie folgt vor:

     1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie **Properties**, **Java Build Path**, **Source**. Führen Sie dann die folgenden Schritte aus:

        1. Doppelklicken Sie auf der Registerkarte **Source** auf **Native library location**.

        1. Klicken Sie im Assistenten **Native Library Folder Configuration** auf **Workspace**.

        1. Wählen Sie im Auswahlbildschirm **Native Library Folder** das Verzeichnis **lib** des Projekts aus.

     1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie **Properties**. Führen Sie dann die folgenden Schritte aus:

        1. Klicken Sie auf der Registerkarte **Libraries** auf **Add Jars**.

        1. Wählen Sie im Assistenten **JAR selection (JAR-Auswahl)** alle JAR-Dateien im Verzeichnis `lib` des Projekts aus.

## Schreiben und untersuchen Sie den Code
<a name="examples-putmedia-write"></a>

Das `PutMedia`-API-Beispiel () weist folgendes Programmiermuster auf:`PutMediaDemo`

**Topics**
+ [Erstelle den PutMediaClient](#producersdk-javaapi-writecode-putmediaapi-putmediaclient)
+ [Streamen von Medien und Anhalten des Threads](#producersdk-javaapi-writecode-putmediaapi-run)

Die Codebeispiele in diesem Abschnitt stammen aus der Klasse `PutMediaDemo`.

### Erstelle den PutMediaClient
<a name="producersdk-javaapi-writecode-putmediaapi-putmediaclient"></a>

Für die Erstellung des `PutMediaClient` Objekts sind die folgenden Parameter erforderlich:
+ URI des `PutMedia`-Endpunkts
+ Ein `InputStream`-Wert, der auf die streamende MKV-Datei zeigt.
+ Name des Streams. In diesem Beispiel wird wieder der in [Verwenden Sie die Java-Producer-Bibliothek](producer-sdk-javaapi.md) (`my-stream`) erstellte Stream verwendet. Wenn Sie einen anderen Stream verwenden möchten, ändern Sie folgenden Parameter:

  ```
  private static final String STREAM_NAME="my-stream";
  ```
**Anmerkung**  
Das `PutMedia` API-Beispiel erstellt keinen Stream. Sie müssen einen Stream erstellen, indem Sie entweder die Testanwendung für die[Verwenden Sie die Java-Producer-Bibliothek](producer-sdk-javaapi.md), die Kinesis Video Streams Streams-Konsole oder die AWS CLI verwenden.
+ Aktueller Zeitstempel
+ Zeitcodetyp. In diesem Beispiel wird `RELATIVE` verwendet, was bedeutet, dass der Zeitstempel relativ zum Beginn des Containers gilt.
+ Ein `AWSKinesisVideoV4Signer`-Objekt, das prüft, ob die empfangenen Pakete von einem autorisierten Absender gesendet wurden
+ Maximale Upstream-Bandbreite in Kbit/s
+ Ein `AckConsumer`-Objekt, das die empfangenen Bestätigungspakete aufnimmt.

Im folgenden Code wird das Objekt `PutMediaClient` erstellt:

```
/* actually URI to send PutMedia request */
final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API);

/* input stream for sample MKV file */
final InputStream inputStream = new FileInputStream(MKV_FILE_PATH);

/* use a latch for main thread to wait for response to complete */
final CountDownLatch latch = new CountDownLatch(1);

/* a consumer for PutMedia ACK events */
final AckConsumer ackConsumer = new AckConsumer(latch);

/* client configuration used for AWS SigV4 signer */
final ClientConfiguration configuration = getClientConfiguration(uri);

/* PutMedia client */
final PutMediaClient client = PutMediaClient.builder()
        .putMediaDestinationUri(uri)
        .mkvStream(inputStream)
        .streamName(STREAM_NAME)
        .timestamp(System.currentTimeMillis())
        .fragmentTimeCodeType("RELATIVE")
        .signWith(getKinesisVideoSigner(configuration))
        .upstreamKbps(MAX_BANDWIDTH_KBPS)
        .receiveAcks(ackConsumer)
        .build();
```

### Streamen von Medien und Anhalten des Threads
<a name="producersdk-javaapi-writecode-putmediaapi-run"></a>

Nach dem Erstellen des Clients wird das asynchrone Streaming mit `putMediaInBackground` gestartet. Danach wird der Haupt-Thread mit `latch.await` angehalten, bis `AckConsumer` zurückkehrt. Nun wird der Client geschlossen.

```
 /* start streaming video in a background thread */
            client.putMediaInBackground();

            /* wait for request/response to complete */
            latch.await();

            /* close the client */
            client.close();
```

## Führen Sie den Code aus und überprüfen Sie ihn
<a name="examples-putmedia-run"></a>

Um das `PutMedia`-API-Beispiel auszuführen, gehen Sie wie folgt vor:

1. Erstellen Sie einen Stream mit dem Namen `my-stream` in der Kinesis Video Streams Streams-Konsole oder mithilfe von. AWS CLI

1. Ändern Sie Ihr Arbeitsverzeichnis auf das Java Producer SDK-Verzeichnis:

   ```
   cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
   ```

1. Kompilieren Sie das Java SDK und die Demoanwendung:

   ```
   mvn package
   ```

1. Erstellen Sie einen temporären Dateinamen im Verzeichnis `/tmp`:

   ```
   jar_files=$(mktemp)
   ```

1. Erstellen Sie eine classpath-Zeichenfolge mit den Abhängigkeiten zum lokalen Repository in einer Datei:

   ```
   mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
   ```

1. Legen Sie den Wert der Umgebungsvariablen `LD_LIBRARY_PATH` wie folgt fest:

   ```
   export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH
   $ classpath_values=$(cat $jar_files)
   ```

1. Führen Sie die Demo über die Befehlszeile wie folgt aus und geben Sie Ihre AWS Anmeldeinformationen ein:

   ```
   java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain
   ```

1. Öffnen Sie die [Kinesis Video Streams Streams-Konsole](https://console.aws.amazon.com//kinesisvideo/home/) und wählen Sie Ihren Stream auf der Seite **Streams verwalten** aus. Das Video wird im Bereich **Video Preview** wiedergegeben.

# Beispiel: Streaming von einer RTSP-Quelle
<a name="examples-rtsp"></a>

Das [C\$1\$1](producer-sdk-cpp.md) enthält eine Definition für einen [Docker-Container](https://www.docker.com/), der eine Verbindung zu einer RTSP-Netzwerkkamera (Real-Time Streaming Protocol) herstellt. Durch die Verwendung von Docker wird die Betriebsumgebung für Kinesis Video Streams standardisiert, wodurch die Erstellung und Verwendung der Anwendung optimiert wird.

Im folgenden Verfahren wird gezeigt, wie Sie die RTSP-Demoanwendung einrichten und verwenden.

**Topics**
+ [Video-Tutorials](#rtsp-video)
+ [Voraussetzungen](#examples-rtsp-prerequisites)
+ [Erstellen Sie das Docker-Image](#examples-rtsp-build)
+ [Führen Sie die RTSP-Beispielanwendung aus](#examples-rtsp-procedure)

## Video-Tutorials
<a name="rtsp-video"></a>

Dieses Video zeigt, wie Sie einen Raspberry Pi einrichten, um RTSP-Feeds an die AWS Cloud und an Amazon Kinesis Video Streams zu senden. Dies ist eine end-to-end Demonstration. 

[![AWS Videos](http://img.youtube.com/vi/YoOYTCD_v3Q?si=ajdNXZpRhNnpAOKk/0.jpg)](http://www.youtube.com/watch?v=YoOYTCD_v3Q?si=ajdNXZpRhNnpAOKk)


Dieses Video zeigt, wie Sie Bilder aus einem Feed aufnehmen, um mithilfe von Computer Vision und Amazon Rekognition die Bilder zu verarbeiten und Benachrichtigungen zu senden.




## Voraussetzungen
<a name="examples-rtsp-prerequisites"></a>

Um die RTSP-Beispielanwendung Kinesis Video Streams auszuführen, benötigen Sie Folgendes:
+ **Docker:** Weitere Informationen zur Installation und Verwendung von Docker finden Sie über folgende Links:
  + [Anleitung zum Herunterladen von Docker](https://docs.docker.com/desktop/)
  + [Erste Schritte mit Docker](https://docs.docker.com/guides/getting-started/)
+ **RTSP-Netzwerkkameraquelle:** Weitere Informationen zu empfohlenen Kameras finden Sie unter [Systemanforderungen](system-requirements.md).

## Erstellen Sie das Docker-Image
<a name="examples-rtsp-build"></a>

Erstellen Sie zunächst das Docker-Image, in dem die Demo-Anwendung ausgeführt werden soll.

1. Klonen Sie das Amazon Kinesis Video Streams Streams-Demo-Repository.

   ```
   git clone https://github.com/aws-samples/amazon-kinesis-video-streams-demos.git
   ```

1. Wechseln Sie in das Verzeichnis, das die Dockerfile enthält. In diesem Fall ist es das Verzeichnis [docker-rtsp](https://github.com/aws-samples/amazon-kinesis-video-streams-demos/blob/master/producer-cpp/docker-rtsp/).

   ```
   cd amazon-kinesis-video-streams-demos/producer-cpp/docker-rtsp/
   ```

1. Verwenden Sie den folgenden Befehl, um das Docker-Image zu erstellen. Dieser Befehl erstellt das Image und kennzeichnet es als rtspdockertest.

   ```
   docker build -t rtspdockertest .
   ```

1. Führen Sie den Befehl aus `docker images` und suchen Sie nach der Bild-ID, die mit gekennzeichnet ist. `rtspdockertest`

   In der Beispielausgabe unten `IMAGE ID` ist der beispielsweise`54f0d65f69b2`.

   ```
   REPOSITORY        TAG       IMAGE ID        CREATED           PLATFORM       SIZE         BLOB SIZE
   rtspdockertest    latest    54f0d65f69b2    10 minutes ago    linux/arm64    653.1 MiB    292.4 MiB
   ```

   Sie werden dies in einem späteren Schritt benötigen.

## Führen Sie die RTSP-Beispielanwendung aus
<a name="examples-rtsp-procedure"></a>

Sie können die RTSP-Beispielanwendung entweder innerhalb oder außerhalb des Docker-Containers ausführen. Folgen Sie den entsprechenden Anweisungen unten.

**Topics**
+ [Innerhalb des Docker-Containers](#examples-rtsp-within)
+ [Außerhalb des Docker-Containers](#examples-rtsp-outside)

### Innerhalb des Docker-Containers
<a name="examples-rtsp-within"></a>

**Führen Sie die RTSP-Beispielanwendung aus**

1. Starten Sie den Amazon Kinesis Video Streams Docker-Container mit dem folgenden Befehl:

   ```
   docker run -it YourImageId /bin/bash
   ```

1. Um die Beispielanwendung zu starten, geben Sie Ihre AWS Anmeldeinformationen, den Namen des Amazon Kinesis Kinesis-Videostreams und die URL der RTSP-Netzwerkkamera ein.
**Wichtig**  
Wenn Sie temporäre Anmeldeinformationen verwenden, müssen Sie auch Ihre angeben. `AWS_SESSION_TOKEN` Sehen Sie sich das zweite Beispiel unten an. 

   ```
   export AWS_ACCESS_KEY_ID=YourAccessKeyId
   export AWS_SECRET_ACCESS_KEY=YourSecretKeyId
   export AWS_DEFAULT_REGION=YourAWSRegion
   ./kvs_gstreamer_sample YourStreamName YourRtspUrl
   ```

   **Temporäre Anmeldeinformationen:**

   ```
   export AWS_ACCESS_KEY_ID=YourAccessKeyId
   export AWS_SECRET_ACCESS_KEY=YourSecretKeyId
   export AWS_SESSION_TOKEN=YourSessionToken
   export AWS_DEFAULT_REGION=YourAWSRegion
   ./kvs_gstreamer_sample YourStreamName YourRtspUrl
   ```

1. Melden Sie sich bei der [Kinesis Video Streams Streams-Konsole](https://console.aws.amazon.com//kinesisvideo/home/) an AWS-Managementkonsole und öffnen Sie sie.

   Sehen Sie sich den Stream an.

1. Um den Docker-Container zu verlassen, schließen Sie das Terminalfenster oder geben Sie ein`exit`.



### Außerhalb des Docker-Containers
<a name="examples-rtsp-outside"></a>

Verwenden Sie **außerhalb** des Docker-Containers den folgenden Befehl:

```
docker run -it YourImageId /bin/bash -c "export AWS_ACCESS_KEY_ID=YourAccessKeyId; export AWS_SECRET_ACCESS_KEY=YourSecretKeyId; export AWS_SESSION_TOKEN=YourSessionToken; export AWS_DEFAULT_REGION=Your AWS Region; ./kvs_gstreamer_sample YourStreamName YourRtspUrl"
```

# Beispiel: Analysieren und Rendern von Kinesis Video Streams Streams-Fragmenten
<a name="examples-renderer"></a>

Die [Streamen Sie mithilfe der Parser-Bibliothek](parser-library.md) enthält eine Demo-Anwendung mit dem Namen`KinesisVideoRendererExample`, die das Parsen und Rendern von Amazon Kinesis Kinesis-Videostream-Fragmenten demonstriert. Das Beispiel dient [JCodec](http://jcodec.org/)zur Dekodierung der H.264-codierten Frames, die mit der Anwendung aufgenommen wurden. [Beispiel: GStreamer SDK-Plug-In für Kinesis Video Streams Producer — kvssink](examples-gstreamer-plugin.md) Nachdem der Frame mit dekodiert wurde JCodec, wird das sichtbare Bild mit gerendert. [JFrame](https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html) 

Dieses Beispiel veranschaulicht, wie Sie folgende Aufgaben ausführen:
+ Rufen Sie mithilfe der `GetMedia` API Frames aus einem Kinesis-Videostream ab und rendern Sie den Stream zur Anzeige.
+ Zeigen Sie den Videoinhalt von Streams in einer benutzerdefinierten Anwendung an, anstatt die Kinesis Video Streams Streams-Konsole zu verwenden.

Sie können die Klassen in diesem Beispiel auch verwenden, um Kinesis-Videostream-Inhalte anzuzeigen, die nicht als H.264 codiert sind, z. B. einen Stream von JPEG-Dateien, die vor der Anzeige nicht dekodiert werden müssen.

Im folgenden Verfahren wird veranschaulicht, wie Sie die Renderer-Demoanwendung einrichten und verwenden.

## Voraussetzungen
<a name="examples-renderer-prerequisites"></a>

Zum Untersuchen und Verwenden der Renderer-Beispielbibliothek ist Folgendes erforderlich:
+ Ein Amazon Web Services (AWS) -Konto. Wenn Sie noch kein AWS Konto haben, finden Sie weitere Informationen unter [Erste Schritte mit Kinesis Video Streams](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/getting-started.html).
+ Eine integrierte Java-Entwicklungsumgebung (IDE) wie [Eclipse Java Neon](https://www.eclipse.org/downloads/packages/release/neon/3/eclipse-jee-neon-3) oder [JetBrains IntelliJ](https://www.jetbrains.com/idea/download/) Idea.

## Renderer-Beispiel ausführen
<a name="examples-renderer-procedure"></a>

1. Erstellen Sie ein Verzeichnis und klonen Sie dann den Beispielquellcode aus dem GitHub Repository.

   ```
   git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
   ```

1. Öffnen Sie die Java-IDE (z. B. [Eclipse](https://www.eclipse.org/) oder [IntelliJ IDEA](https://www.jetbrains.com/idea/)) und importieren Sie das heruntergeladene Apache Maven-Projekt: 
   + **In Eclipse:** Klicken Sie auf **File**, **Import**, **Maven**, **Existing Maven Projects**. Navigieren Sie zum `kinesis-video-streams-parser-lib` Verzeichnis .
   + **In IntelliJ Idea: ** Klicken Sie auf **Import**. Navigieren Sie zur Datei `pom.xml` im Stammverzeichnis des heruntergeladenen Pakets.
**Anmerkung**  
Wenn IntelliJ Ihre Abhängigkeiten nicht finden kann, müssen Sie möglicherweise Folgendes tun:   
**Neuerstellung:** Klicken Sie auf **Datei**, **Einstellungen**, **Build, Execution, Deployment (Erstellung, Ausführung, Bereitstellung)**, **Compiler**. Vergewissern Sie sich, dass die Option **Ausgabeverzeichnis bei Neuerstellung löschen** ausgewählt ist, und wählen Sie dann **Build**, **Build Project** aus.
**Projekt erneut importieren:** Öffnen Sie das Kontextmenü (Rechtsklick) für das Projekt und wählen Sie dann **Maven** und **Reimport (Neu importieren)** aus.

    Weitere Informationen finden Sie in der Dokumentation zur IDE.

1. Öffnen Sie über Ihre Java-IDE `src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest`. 

1. Entfernen Sie die Anweisung `@Ignore` aus der Datei.

1. Aktualisieren Sie den `.stream` Parameter mit dem Namen Ihres Kinesis-Videostreams.

1. Führen Sie den Test `KinesisVideoRendererExample` aus.

## So funktioniert’s
<a name="examples-renderer-howitworks"></a>

**Topics**
+ [Senden von MKV-Daten](#examples-renderer-howitworks-send)
+ [Analysieren von MKV-Fragmenten in Frames](#examples-renderer-howitworks-parse)
+ [Den Frame dekodieren und anzeigen](#examples-renderer-howitworks-display)

### Senden von MKV-Daten
<a name="examples-renderer-howitworks-send"></a>

Im Beispiel werden MKV-Beispieldaten aus der `rendering_example_video.mkv` Datei gesendet, `PutMedia` um Videodaten an einen Stream mit dem Namen zu senden. **render-example-stream**

Die Anwendung erstellt eine `PutMediaWorker`:

```
PutMediaWorker putMediaWorker = PutMediaWorker.create(getRegion(),
    getCredentialsProvider(),
    getStreamName(),
    inputStream,
    streamOps.amazonKinesisVideo);
executorService.submit(putMediaWorker);
```

Informationen zur Klasse `PutMediaWorker` finden Sie unter [Rufen Sie an PutMedia](parser-library-write.md#parser-library-write-example-putmedia) in der Dokumentation zu [Streamen Sie mithilfe der Parser-Bibliothek](parser-library.md).

### Analysieren von MKV-Fragmenten in Frames
<a name="examples-renderer-howitworks-parse"></a>

Im Beispiel werden die MKV-Fragmente dann mittels einer `GetMediaWorker` aus dem Stream abgerufen und analysiert:

```
GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(),
    getCredentialsProvider(),
    getStreamName(),
    new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST),
    streamOps.amazonKinesisVideo,
    getMediaProcessingArgumentsLocal.getFrameVisitor());
executorService.submit(getMediaWorker);
```

Weitere Informationen zur Klasse `GetMediaWorker` finden Sie unter [Rufen Sie GetMedia](parser-library-write.md#parser-library-write-example-getmedia) in der Dokumentation zu [Streamen Sie mithilfe der Parser-Bibliothek](parser-library.md).

### Den Frame dekodieren und anzeigen
<a name="examples-renderer-howitworks-display"></a>

Das Beispiel dekodiert und zeigt den Frame dann mit. [JFrame](https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html)

Das folgende Code-Beispiel stammt aus der Klasse `KinesisVideoFrameViewer`, die `JFrame` erweitert:

```
 public void setImage(BufferedImage bufferedImage) {
    image = bufferedImage;
    repaint();
}
```

Das Bild wird als Instanz von [java.awt.image angezeigt. BufferedImage](https://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html). Beispiele, die die Arbeit mit `BufferedImage` veranschaulichen, finden Sie unter [Lesen/Laden eines Image](https://docs.oracle.com/javase/tutorial/2d/images/loadimage.html).