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.
Daten an einen Amazon Kinesis Kinesis-Videostream senden
In diesem Abschnitt wird beschrieben, wie Sie Mediendaten von einer Kamera an den Kinesis-Videostream senden, den Sie im vorherigen Abschnitt erstellt haben. In diesem Abschnitt wird die C++ Producer-Bibliothek als GStreamer-Plugin — kvssink Plug-in verwendet.
Um Medien von einer Vielzahl von Geräten auf verschiedenen Betriebssystemen zu senden, verwendet dieses Tutorial die Kinesis Video Streams C++ Producer Library und GStreamer, ein Open-Source-Medienframework, das den Zugriff auf Kameras und andere Medienquellen standardisiert.
Erstellen Sie das SDK und die Beispiele
Sie können das SDK und die Beispiele auf Ihrem Computer oder in erstellen AWS Cloud9. Folgen Sie den unten angegebenen Verfahren.
- Build on your computer
-
Verwenden Sie die Anweisungen in der Readme-Datei, um die Producer-Bibliothek und die Beispielanwendung zu erstellen.
Dies umfasst:
-
Installieren von Abhängigkeiten
-
Das Repository klonen
-
Verwenden von CMake zum Generieren von Makefiles
-
Die Binärdateien mit Make erstellen
- Build in AWS Cloud9
-
Gehen Sie wie folgt vor, um in AWS Cloud9 Kinesis Video Streams hochzuladen. Sie müssen nichts auf Ihren Computer herunterladen.
-
In der AWS Management Console, offen AWS Cloud9.
Wählen Sie Umgebung erstellen aus.
-
Gehen Sie auf dem Bildschirm Umgebung erstellen wie folgt vor:
Sie können die Standardauswahl für die anderen Felder beibehalten.
-
Wenn die Umgebung erstellt wurde, wählen Sie in der Spalte Cloud9 IDE die Option Öffnen aus.
Im unteren mittleren Bereich des Bildschirms sehen Sie. Admin:~/environment $
Dies ist das AWS Cloud9
(Amazon EC2) -Terminal.
Wenn Sie das Terminal versehentlich schließen, wählen Sie Fenster, Neues Terminal.
Führen Sie die folgenden Befehle im Terminal aus, um die Lautstärke auf 20 GiB zu ändern.
-
Laden Sie das -Skript herunter.
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
-
Erteilen Sie dem Skript Ausführungsberechtigungen.
chmod +x resize_volume.sh
-
Führen Sie das Skript aus.
./resize_volume.sh
-
Rufen Sie die neuesten Informationen über die gesamte Software ab, die Sie mit dem Advanced Packaging Tool (APT) installieren oder aktualisieren können.
Dieser Befehl aktualisiert nicht die Software selbst, sondern stellt sicher, dass Ihr System über die neuesten verfügbaren Versionen informiert ist.
sudo apt-get update
-
Installieren Sie die Abhängigkeiten des C++-Producer-SDK.
sudo apt-get install -y cmake m4 git build-essential pkg-config libssl-dev libcurl4-openssl-dev \
liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \
gstreamer1.0-plugins-ugly gstreamer1.0-tools
-
Verwenden Sie Git, um das C++-Producer-SDK zu klonen.
git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
-
Bereiten Sie ein Build-Verzeichnis vor.
cd amazon-kinesis-video-streams-producer-sdk-cpp
mkdir build
cd build
-
Verwenden Sie CMake, um Makefiles zu generieren.
cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF
Das Ende der erwarteten Ausgabe sieht wie folgt aus:
-- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
-
Verwenden Sie make, um das SDK und die Beispielanwendungen zu kompilieren und die endgültigen ausführbaren Dateien zu erstellen.
make
Das Ende der erwarteten Ausgabe sieht wie folgt aus:
[100%] Linking CXX executable kvs_gstreamer_file_uploader_sample
[100%] Built target kvs_gstreamer_file_uploader_sample
-
Vergewissern Sie sich, dass die Beispieldateien erstellt wurden. Listet die Dateien im aktuellen Verzeichnis auf:
ls
Vergewissern Sie sich, dass die folgenden Dateien vorhanden sind:
-
kvs_gstreamer_sample
-
libgstkvssink.so
-
(Optional) Sie können dem Startskript Ihrer Shell die Einstellung der Umgebungsvariablen GST_PLUGIN_PATH hinzufügen. Dadurch wird sichergestellt, dass GST_PLUGIN_PATH während einer neuen Terminalsitzung richtig eingestellt ist. In lautet das AWS Cloud9 Startskript der Shell:. ~/.bashrc
Führen Sie den folgenden Befehl aus, um den Befehl an das Ende des Startskripts der Shell anzuhängen.
echo "export GST_PLUGIN_PATH=~/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build" >> ~/.bashrc
Geben Sie Folgendes ein, um das Startskript der Shell auszuführen:
source ~/.bashrc
Vergewissern Sie sich, dass GST_PLUGIN_PATH gesetzt ist.
echo $GST_PLUGIN_PATH
Wenn Sie die Ausgabe korrekt eingestellt haben, wird die folgende Ausgabe angezeigt. Wenn die Ausgabe leer ist, ist die Umgebungsvariable nicht richtig gesetzt.
/home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
Führen Sie die Beispiele aus, um Medien auf Kinesis Video Streams hochzuladen
Die Beispielanwendung unterstützt keine IMDS-Anmeldeinformationen. Exportieren Sie in Ihrem Terminal die AWS Anmeldeinformationen für Ihren IAM-Benutzer oder Ihre IAM-Rolle und die Region, in der sich Ihr Stream befindet.
export AWS_ACCESS_KEY_ID=YourAccessKey
export AWS_SECRET_ACCESS_KEY=YourSecretKey
export AWS_DEFAULT_REGION=YourAWSRegion
Wenn du temporäre AWS Anmeldeinformationen verwendest, exportiere auch dein Sitzungstoken:
export AWS_SESSION_TOKEN=YourSessionToken
- .mp4 files
-
Laden Sie ein MP4-Beispielvideo herunter, um es auf Kinesis Video Streams hochzuladen.
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4
Videospezifikationen:
-
Auflösung: 1280 x 720 Pixel
-
Bildrate - 30 Bilder pro Sekunde
-
Dauer - 14,0 Sekunden
-
Videokodierung - H.264, in Track 1
-
Keyframes — Alle 3 Sekunden, was zu einer Fragmentdauer (auch bekannt als Größe einer Gruppe von Bildern (GoP)) von 3 Sekunden führt, wobei das letzte Fragment 2 Sekunden lang ist.
Führen Sie den folgenden Befehl mit dem Namen des Streams aus, den Sie zuvor erstellt haben. Wenn Sie noch keinen Stream erstellt haben, finden Sie weitere Informationen unterEinen Kinesis-Videostream erstellen.
./kvs_gstreamer_sample YourStreamName
./sample.mp4
- Sample video from GStreamer
-
Verwenden Sie den folgenden Befehl, um mit GStreamer ein Video zu generieren.
Teilen Sie GStreamer mit, wo sich das GStreamer-Plugin befinden soll. kvssink
Geben Sie in Ihrem Build-Verzeichnis den Pfad zu dem Ordner an, der die Datei enthält. libgstkvssink.so
Führen Sie in Ihrem Build-Verzeichnis den folgenden Befehl aus:
export GST_PLUGIN_PATH=`pwd`
Diese GStreamer-Pipeline generiert einen Live-Testvideostream mit einem Standard-Testmuster, das mit 10 Bildern pro Sekunde und einer Auflösung von 640x480 Pixeln läuft. Es wird ein Overlay hinzugefügt, das die aktuelle Systemzeit und das aktuelle Systemdatum anzeigt. Das Video wird dann in das H.264-Format codiert, und es werden höchstens alle 10 Bilder Keyframes generiert, was zu einer Fragmentdauer (auch bekannt als Größe einer Bildgruppe (GoP)) von 1 Sekunde führt. kvssink
nimmt den H.264-codierten Videostream, packt ihn in das Matroska (MKV) -Containerformat und lädt ihn in Ihren Kinesis-Videostream hoch.
Führen Sie den folgenden Befehl aus:
gst-launch-1.0 -v videotestsrc is-live=true \
! video/x-raw,framerate=10/1,width=640,height=480 \
! clockoverlay time-format="%a %B %d, %Y %I:%M:%S %p" \
! x264enc bframes=0 key-int-max=10 \
! h264parse \
! kvssink stream-name="YourStreamName
"
Um die GStreamer-Pipeline zu stoppen, wählen Sie das Terminalfenster aus und drücken Sie STRG+C.
Bestätigungsobjekte überprüfen
Während des Uploads sendet Kinesis Video Streams Bestätigungsobjekte zurück an den Client, der den Upload durchführt. Sie sollten diese in der Befehlsausgabe gedruckt sehen. Ein Beispiel sieht wie folgt aus:
{"EventType":"PERSISTED","FragmentTimecode":1711124585823
,"FragmentNumber":"12345678901234567890123456789012345678901234567
"}
Wenn die Bestätigung „Ja“ EventType
lautetPERSISTED
, bedeutet dies, dass Kinesis Video Streams diesen Medienblock dauerhaft gespeichert und verschlüsselt hat, um ihn abzurufen, zu analysieren und langfristig zu speichern.
Weitere Informationen zu Bestätigungen finden Sie unter. PutMedia