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.
Problembehebung bei Kinesis Video Streams
Verwenden Sie die folgenden Informationen, um häufig auftretende Probleme mit Amazon Kinesis Video Streams zu beheben.
Themen
Allgemeine Probleme
In diesem Abschnitt werden allgemeine Probleme beschrieben, die bei der Arbeit mit Kinesis Video Streams auftreten können.
Problembereiche
Latenz zu hoch
Die Latenz kann durch die Dauer der Fragmente verursacht werden, die an den Kinesis Video Streams Streams-Dienst gesendet werden. Eine Möglichkeit, die Latenzzeit zwischen Producer und Service zu reduzieren, besteht darin, die Medien-Pipeline so zu konfigurieren, dass kürzere Fragmentlaufzeiten entstehen.
Um die Anzahl der in jedem Fragment gesendeten Frames zu reduzieren, reduzieren Sie den folgenden Wert inkinesis_video_gstreamer_sample_app.cpp
:
g_object_set(G_OBJECT (data.encoder), "bframes", 0, "key-int-max",
45
, "bitrate", 512, NULL);
Anmerkung
Die Latenzen sind im Mozilla Firefox-Browser aufgrund der internen Implementierung des Video-Renderings höher.
APIProbleme
In diesem Abschnitt werden API Probleme beschrieben, die bei der Arbeit mit Kinesis Video Streams auftreten können.
Problembereiche
- Fehler: „Unbekannte Optionen“
- Fehler: „Unable to determine service/operation name to be authorized“ (Zu autorisierender Service-/Operationsname kann nicht ermittelt werden)
- Fehler: „Failed to put a frame in the stream“ (Es konnte kein Frame in den Stream eingefügt werden)
- Fehler: „Der Dienst hat die Verbindung geschlossen, bevor die endgültige AckEvent Version empfangen wurde“
- Fehler: "STATUS_ _ STORE OUT MEMORY _OF_“
- Fehler: „Die Anmeldeinformationen sollten auf eine gültige Region beschränkt sein.“
Fehler: „Unbekannte Optionen“
GetMedia
und GetMediaForFragmentList
können mit dem folgenden Fehler fehlschlagen:
Unknown options: <filename>.mkv
Dieser Fehler tritt auf, wenn Sie den AWS CLI mit einem output
Typ von json
konfiguriert haben. Konfigurieren Sie den AWS CLI mit dem Standardausgabetyp (none
) neu. Informationen zur Konfiguration von finden Sie AWS CLI unter configure in der AWS CLI Befehlsreferenz.
Fehler: „Unable to determine service/operation name to be authorized“ (Zu autorisierender Service-/Operationsname kann nicht ermittelt werden)
GetMedia
kann mit dem folgenden Fehler fehlschlagen:
Unable to determine service/operation name to be authorized
Dieser Fehler kann auftreten, wenn der Endpunkt nicht korrekt angegeben ist. Wenn Sie den Endpunkt erhalten, stellen Sie sicher, dass Sie den folgenden Parameter in den GetDataEndpoint
Aufruf aufnehmen, je nachdem, welcher aufgerufen werden API soll:
--api-name GET_MEDIA --api-name PUT_MEDIA --api-name GET_MEDIA_FOR_FRAGMENT_LIST --api-name LIST_FRAGMENTS
Fehler: „Failed to put a frame in the stream“ (Es konnte kein Frame in den Stream eingefügt werden)
PutMedia
kann mit dem folgenden Fehler fehlschlagen:
Failed to put a frame in the stream
Dieser Fehler kann auftreten, wenn für den Dienst keine Konnektivität oder Berechtigungen verfügbar sind. Führen Sie den folgenden Befehl in der AWS CLI aus und stellen Sie sicher, dass die Stream-Informationen abgerufen werden können:
aws kinesisvideo describe-stream --stream-name
StreamName
--endpointhttps://ServiceEndpoint.kinesisvideo.region.amazonaws.com
Schlägt der Anruf fehl, finden Sie AWS CLI weitere Informationen unter Problembehandlung.
Fehler: „Der Dienst hat die Verbindung geschlossen, bevor die endgültige AckEvent Version empfangen wurde“
PutMedia
kann mit dem folgenden Fehler fehlschlagen:
com.amazonaws.SdkClientException: Service closed connection before final AckEvent was received
Dieser Fehler kann auftreten, wenn PushbackInputStream
nicht korrekt implementiert ist. Stellen Sie sicher, dass die unread()
Methoden korrekt implementiert sind.
Fehler: "STATUS_ _ STORE OUT MEMORY _OF_“
PutMedia
kann mit dem folgenden Fehler fehlschlagen:
The content store is out of memory.
Dieser Fehler tritt auf, wenn der Inhaltesspeicher nicht ausreichend groß dimensioniert wurde. Um den Inhaltsspeicher zu vergrößern, erhöhen Sie den Wert von StorageInfo.storageSize
. Weitere Informationen finden Sie unter StorageInfo.
Fehler: „Die Anmeldeinformationen sollten auf eine gültige Region beschränkt sein.“
Dieser Fehler tritt auf, wenn die Signaturregion nicht mit der Endpunktregion übereinstimmt.
Wenn Sie us-west-2
beispielsweise Ihre Signierregion angeben, aber versuchen, eine Verbindung zum Endpunkt kinesisvideo.us-east-1.amazonaws.com
(us-east-1
) herzustellen, wird dieser Fehler angezeigt.
In einigen Anwendungen, wie kvssink, ist die Regions-Fallback-Kette standardmäßig auf eingestellt. us-west-2
Stellen Sie sicher, dass Sie Ihre Region entsprechend der von Ihnen verwendeten Anwendung richtig eingestellt haben.
HLSProbleme
Falls Ihr Videostream nicht korrekt wiedergegeben wird, finden Sie weitere Informationen unterBeheben von HLS-Problemen.
Probleme mit Java
In diesem Abschnitt wird beschrieben, wie Sie häufig auftretende Java-Probleme beheben können, die bei der Arbeit mit Kinesis Video Streams auftreten.
Problembereiche
Aktivieren von Java-Protokollen
Um Probleme mit Java-Beispielen und -Bibliotheken zu beheben, ist es hilfreich, die Debug-Logs zu aktivieren und zu untersuchen. Gehen Sie zum Aktivieren der Debug-Protokolle folgendermaßen vor:
-
Fügen Sie
log4j
in die Dateipom.xml
im Knoten
dependencies
ein:<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
-
Erstellen Sie im Verzeichnis
target/classes
eine Datei namenslog4j.properties
mit folgendem Inhalt:# Root logger option log4j.rootLogger=DEBUG, stdout # Redirect log messages to console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n log4j.logger.org.apache.http.wire=DEBUG
Die Debug-Protokolle werden dann auf der IDE Konsole gedruckt.
Probleme mit der Producer-Bibliothek
In diesem Abschnitt werden Probleme beschrieben, die bei der Verwendung von Zu Kinesis Video Streams hochladen auftreten können.
Problembereiche
- Der Producer kann nicht kompiliert werden SDK
- Der Videostream wird nicht in der Konsole angezeigt
- Fehler: „Das in der Anfrage enthaltene Sicherheitstoken ist ungültig“ beim Streamen von Daten mit der GStreamer Demo-Anwendung
- Fehler: „Fehler beim Senden des Frames an den Kinesis-Video-Client“
- GStreamerDie Anwendung wird unter OS X mit der Meldung „Streaming gestoppt, Grund nicht ausgehandelt“ beendet
- Fehler: „Heap konnte nicht zugewiesen werden“ beim Erstellen des Kinesis Video Client in der GStreamer Demo auf dem Raspberry Pi
- Fehler: „Ungültiger Befehl“ beim Ausführen der GStreamer Demo auf dem Raspberry Pi
- Die Kamera kann nicht auf Raspberry Pi geladen werden.
- Kamera kann auf macOS High Sierra nicht gefunden werden.
- Datei jni.h beim Kompilieren auf macOS High Sierra nicht gefunden
- Curl-Fehler beim Ausführen der Demo-Anwendung GStreamer
- Zeitstempel-/Zeitraum-Assertion während der Laufzeit auf Raspberry Pi
- Assertion auf gst_value_set_fraction_range_full auf Raspberry Pi
- STATUS_ _ MKV _ INVALID _ ANNEXB NALU _IN_ FRAME _ DATA (0x3200000d) -Fehler auf Android
- Fehler: Die maximale Fragmentdauer wurde erreicht
- "Ungültiger Objektname abgelaufen", Fehler bei der Verwendung der IoT-Autorisierung
Der Producer kann nicht kompiliert werden SDK
Überprüfen Sie, ob die erforderlichen Bibliotheken in Ihrem Pfad vorhanden sind. Zur Bestätigung führen Sie den folgenden Befehl aus:
env | grep LD_LIBRARY_PATH LD_LIBRARY_PATH=/home/local/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib
Der Videostream wird nicht in der Konsole angezeigt
Damit der Videostream in der Konsole angezeigt werden kann, muss er mit H.264 im AvCC-Format codiert worden sein. Prüfen Sie Folgendes, wenn der Stream nicht angezeigt wird:
-
Für NALAnpassungsflags ist
NAL_ADAPTATION_ANNEXB_NALS | NAL_ADAPTATION_ANNEXB_CPD_NALS
eingestellt, wenn der Originalstream im Format Annex-B vorliegt. Dies ist der Standardwert imStreamDefinition
-Konstruktor. -
Sie stellen die Code Private Data ordnungsgemäß bereit. Für H.264 sind dies der Sequenzparametersatz (SPS) und der Bildparametersatz (PPS). Abhängig von der Medienquelle können diese Daten separat aus der Medienquelle abgerufen oder im Frame codiert werden.
Viele einfache Streams liegen im folgenden Format vor (
Ab
ist der Annex-B-Startcode – 001 oder 0001):Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)
Der CPD (Codec Private Data) kann, falls H.264 als SPS und im Stream istPPS, an das AvCC-Format angepasst werden. Sofern die Medienpipeline das nicht CPD separat vorgibt, kann die Anwendung das CPD aus dem Frame extrahieren, indem sie nach dem ersten Idr-Frame sucht (der das SPS und enthalten solltePPS), die beiden extrahiert NALUs (was dann Ab (Sps) Ab (Pps) sein wird) und es in den In einfügt. CPD
StreamDefinition
Fehler: „Das in der Anfrage enthaltene Sicherheitstoken ist ungültig“ beim Streamen von Daten mit der GStreamer Demo-Anwendung
Wenn dieser Fehler auftritt, liegt ein Problem mit Ihren Anmeldeinformationen vor. Überprüfen Sie Folgendes:
-
Wenn Sie temporäre Anmeldeinformationen verwenden, müssen Sie den Sitzungs-Token angeben.
-
Überprüfen Sie, ob Ihre temporären Anmeldeinformationen abgelaufen sind.
-
Vergewissern Sie sich, dass Sie über die richtigen Rechte verfügen.
-
Vergewissern Sie sich unter MacOS, dass Sie keine Anmeldeinformationen im Schlüsselbund zwischengespeichert haben.
Fehler: „Fehler beim Senden des Frames an den Kinesis-Video-Client“
Wenn dieser Fehler auftritt, sind die Zeitstempel im Quell-Stream nicht richtig gesetzt. Gehen Sie wie folgt vor:
-
Verwenden Sie das neueste SDK Beispiel, das möglicherweise ein Update enthält, das Ihr Problem behebt.
-
Stellen Sie für den qualitativ hochwertigen Stream eine höhere Bitrate ein und korrigieren Sie jeglichen Jitter im Quellstream, sofern die Kamera dies unterstützt.
GStreamerDie Anwendung wird unter OS X mit der Meldung „Streaming gestoppt, Grund nicht ausgehandelt“ beendet
Das Streamen kann unter OS X mit der folgenden Meldung abgebrochen werden:
Debugging information: gstbasesrc.c(2939): void gst_base_src_loop(GstPad *) (): /GstPipeline:test-pipeline/GstAutoVideoSrc:source/GstAVFVideoSrc:source-actual-src-avfvide: streaming stopped, reason not-negotiated (-4)
Eine mögliche Problemumgehung besteht darin, die Parameter für die Bildrate aus dem gst_caps_new_simple
Aufruf zu entfernen in: kinesis_video_gstreamer_sample_app.cpp
GstCaps *h264_caps = gst_caps_new_simple("video/x-h264", "profile", G_TYPE_STRING, "baseline", "stream-format", G_TYPE_STRING, "avc", "alignment", G_TYPE_STRING, "au", "width", GST_TYPE_INT_RANGE, 320, 1920, "height", GST_TYPE_INT_RANGE, 240, 1080,
"framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 30, 1,
NULL);
Fehler: „Heap konnte nicht zugewiesen werden“ beim Erstellen des Kinesis Video Client in der GStreamer Demo auf dem Raspberry Pi
Die GStreamer Beispielanwendung versucht, 512 MB zuzuweisenRAM, die auf Ihrem System möglicherweise nicht verfügbar sind. Sie können die Größe des zugewiesenen Speicherplatzes verringern, indem Sie den folgenden Wert in KinesisVideoProducer.cpp
verkleinern:
device_info.storageInfo.storageSize =
512
* 1024 * 1024;
Fehler: „Ungültiger Befehl“ beim Ausführen der GStreamer Demo auf dem Raspberry Pi
Wenn beim Ausführen der GStreamer Demo der folgende Fehler auftritt, stellen Sie sicher, dass Sie die Anwendung für die richtige Version Ihres Geräts kompiliert haben. (Stellen Sie beispielsweise sicher, dass Sie nicht für Raspberry Pi 3 kompilieren, wenn Sie auf Raspberry Pi 2 laufen.)
INFO - Initializing curl. Illegal instruction
Die Kamera kann nicht auf Raspberry Pi geladen werden.
Um zu überprüfen, ob die Kamera geladen wurde, führen Sie die folgenden Schritte aus:
ls /dev/video*
Ist die Suche ergebnislos, führen Sie die folgenden Schritte aus:
vcgencmd get_camera
Die Ausgabe sollte folgendermaßen oder ähnlich aussehen:
supported=1 detected=1
Wenn der Treiber die Kamera nicht erkennt, gehen Sie wie folgt vor:
-
Überprüfen Sie die technische Einrichtung der Kamera und prüfen Sie, ob sie richtig angeschlossen ist.
-
Führen Sie die folgenden Schritte aus, um die Firmware zu aktualisieren:
sudo rpi-update
-
Starten Sie das Gerät neu.
-
Führen Sie die folgenden Schritte aus, um den Treiber zu laden:
sudo modprobe bcm2835-v4l2
-
Überprüfen Sie, ob die Kamera erkannt wurde:
ls /dev/video*
Kamera kann auf macOS High Sierra nicht gefunden werden.
Unter macOS High Sierra kann die Demo-Anwendung die Kamera nicht finden, wenn mehr als eine Kamera verfügbar ist.
Datei jni.h beim Kompilieren auf macOS High Sierra nicht gefunden
Um diesen Fehler zu beheben, aktualisieren Sie Ihre Installation von Xcode auf die neueste Version.
Curl-Fehler beim Ausführen der Demo-Anwendung GStreamer
Um Curl-Fehler bei der Ausführung der GStreamer Demo-Anwendung zu beheben, kopieren Sie diese Zertifikatsdatei/etc/ssl/cert.pem
Zeitstempel-/Zeitraum-Assertion während der Laufzeit auf Raspberry Pi
Wenn zur Laufzeit eine Zeitstempel-/Zeitraum-Assertion auftritt, aktualisieren Sie die Firmware und starten Sie das Gerät neu:
sudo rpi-update $ sudo reboot
Assertion auf gst_value_set_fraction_range_full auf Raspberry Pi
Die folgende Assertion erscheint, wenn der uv4l
-Service ausgeführt wird:
gst_util_fraction_compare (numerator_start, denominator_start, numerator_end, denominator_end) < 0' failed
Wenn dies der Fall ist, stoppen Sie den uv4l
-Service und starten Sie die Anwendung neu.
STATUS_ _ MKV _ INVALID _ ANNEXB NALU _IN_ FRAME _ DATA (0x3200000d) -Fehler auf Android
Der folgende Fehler tritt auf, wenn NALAnpassungsflags für den Medien-Stream fehlerhaft ist:
putKinesisVideoFrame(): Failed to put a frame with status code 0x3200000d
Wenn dieser Fehler auftritt, geben Sie das richtige .withNalAdaptationFlags
-Flag für Ihr Medium (Beispiel: NAL_ADAPTATION_ANNEXB_CPD_NALS
) an. Geben Sie dieses Flag in der folgenden Zeile des Android an:
Fehler: Die maximale Fragmentdauer wurde erreicht
Dieser Fehler tritt auf, wenn ein Medienfragment in einem Stream die maximale Fragmentdauer überschreitet. Informationen zur maximalen Fragmentdauer finden Sie im Kontingente für Medien- und Archivmediendienste API Abschnitt.
Versuchen Sie, das Problem wie folgt zu beheben:
-
Wenn Sie eine USB Webcam/Kamera verwenden, gehen Sie wie folgt vor:
-
Wenn Sie die Keyframe-basierte Fragmentierung verwenden, stellen Sie den Encoder so ein, dass er Keyframes innerhalb von 10 Sekunden bereitstellt.
-
Wenn Sie keine Keyframe-basierte Fragmentierung verwenden, legen Sie bei der Definition des Stream-Ins die maximale Fragmentdauer auf einen Wert festSchreiben und untersuchen Sie den Code, der weniger als 10 Sekunden beträgt.
-
Wenn Sie Software-Encoder (wie x264) in der GStreamer Pipeline verwenden, können Sie das key-int-max Attribut innerhalb von 10 Sekunden auf einen Wert setzen. Legen Sie beispielsweise den Wert 60 und key-int-max die Bildrate pro Sekunde auf 30 fest, um Keyframes alle 2 Sekunden zu aktivieren.
-
-
Wenn Sie eine RPI Kamera verwenden, legen Sie das Keyframe-Intervall-Attribut auf weniger als 10 Sekunden fest.
-
Wenn Sie eine IP (RTSP) -Kamera verwenden, setzen Sie die GOP Größe auf 60.
"Ungültiger Objektname abgelaufen", Fehler bei der Verwendung der IoT-Autorisierung
Um diesen Fehler (HTTP Error 403: Response: {"message":"Invalid thing name passed"}
) zu vermeiden, wenn Sie IoT-Anmeldeinformationen für die Autorisierung verwenden, stellen Sie sicher, dass der Wert von stream-name
(ein erforderlicher Parameter des kvssink
Elements) mit dem Wert von identisch istiot-thingname
. Weitere Informationen finden Sie unter GStreamerReferenz zu den Elementparametern.
Probleme mit der Stream-Parser-Bibliothek
In diesem Abschnitt werden Probleme beschrieben, die bei der Verwendung von Streamen Sie mithilfe der Parser-Bibliothek auftreten können.
Problembereiche
Es kann nicht auf einen einzelnen Frame aus dem Stream zugegriffen werden
Um auf einen einzelnen Frame aus einer Streaming-Quelle in Ihrer Consumer-Anwendung zuzugreifen, stellen Sie sicher, dass Ihr Stream die richtigen privaten Codec-Daten enthält. Informationen über das Format der Daten in einem Stream finden Sie unter Datenmodell.
Fragmentdekodierungsfehler
Wenn Ihre Fragmente nicht korrekt in einem H.264-Format und auf einem vom Browser unterstützten Level kodiert sind , wird möglicherweise die folgende Fehlermeldung angezeigt, wenn Sie Ihren Stream in der Konsole wiedergeben:
Fragment Decoding Error There was an error decoding the video data. Verify that the stream contains valid H.264 content
Wenn dies passiert, überprüfen Sie Folgendes:
-
Die Auflösung der Frames stimmt mit der in den Codec Private Data angegebenen Auflösung überein.
-
Das H.264-Profil und das Level der kodierten Frames stimmt mit dem Profil und dem Level überein, die in den Codec Private Data angegeben sind.
-
Der Browser unterstützt die Profil/Level-Kombination. Die meisten aktuellen Browser unterstützt alle Profil- und Level-Kombinationen.
-
Die Zeitstempel sind präzise und in der richtigen Reihenfolge, und es werden keine doppelten Zeitstempel erstellt.
-
Ihre Anwendung kodiert die Frame-Daten mit dem H.264-Format.
Probleme mit dem Netzwerk
Wenn beim Versuch, eine Verbindung zu Kinesis Video Streams herzustellen, Verbindungsfehler wie „Verbindungstimeout“ oder „Verbindung fehlgeschlagen“ angezeigt werden, kann dies an Einschränkungen des IP-Adressbereichs in Ihrer Netzwerkkonfiguration liegen.
Wenn in Ihrem Setup IP-Adressbereichsbeschränkungen für Kinesis Video Streams gelten, aktualisieren Sie Ihre Netzwerkkonfiguration, sodass die IP-Adressbereiche
Wichtig
Die IP-Bereichsliste ist keine vollständige Liste der IP-Adressen von Kinesis Video Streams. Geben Sie die angezeigten IP-Adressbereiche an und beachten Sie, dass sich die IP-Adressen im Laufe der Zeit ändern können.
Weitere Informationen finden Sie unter AWS IP-Bereiche. Folgen Sie dem Abonnementverfahren, um benachrichtigt zu werden, wenn sich IP-Bereiche ändern.