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.
Callbacks von Produzenten SDK
Die Klassen und Methoden im Amazon Kinesis Video Streams Producer verwalten SDK keine eigenen Prozesse. Sie verwenden stattdessen eingehende Funktionsaufrufe und Ereignisse, um Callbacks für die Kommunikation mit der Anwendung zu planen.
Es gibt zwei Callback-Muster, mit denen die Anwendung interagieren kann: SDK
-
CallbackProvider
— Dieses Objekt macht jeden Callback von der plattformunabhängigen code (PIC) -Komponente für die Anwendung verfügbar. Dieses Muster ermöglicht die volle Funktionalität, bedeutet aber auch, dass die Implementierung alle öffentlichen API Methoden und Signaturen in der C++-Schicht verarbeiten muss. -
StreamCallbackProviderund ClientCallbackProvider — Diese Objekte machen die stream- und clientspezifischen Callbacks verfügbar, und die C++-Schicht von macht die restlichen Callbacks SDK verfügbar. Dies ist das bevorzugte Callback-Muster für die Interaktion mit dem Producer. SDK
In der folgenden Abbildung ist das Objektmodell der Callback-Objekte dargestellt:
Im obigen Diagramm DefaultCallbackProvider
leitet sich von ab CallbackProvider
(wodurch alle Callbacks in der verfügbar gemacht werdenPIC) und enthält und. StreamCallbackProvider
ClientCallbackProvider
Dieses Thema enthält die folgenden Abschnitte:
ClientCallbackProvider
Das ClientCallbackProvider
-Objekt stellt Callback-Funktionen auf Client-Ebene bereit. Die Details der Funktionen sind im Abschnitt ClientCallbacks Struktur beschrieben.
Callback-Methoden:
-
getClientReadyCallback
— Meldet einen Bereitschaftsstatus für den Client. -
getStorageOverflowPressureCallback
— Meldet einen Speicherüberlauf oder -druck. Dieser Callback wird aufgerufen, wenn die Speichernutzung den WertSTORAGE_PRESSURE_NOTIFICATION_THRESHOLD
, also 5 Prozent der Gesamtspeichergröße, unterschreitet. Weitere Informationen finden Sie unter StorageInfo.
StreamCallbackProvider
Das StreamCallbackProvider
-Objekt stellt Callback-Funktionen auf Stream-Ebene bereit.
Callback-Methoden:
-
getDroppedFragmentReportCallback
: Meldet ein verworfenes Fragment. -
getDroppedFrameReportCallback
— Meldet einen verloren gegangenen Frame. -
getFragmentAckReceivedCallback
— Meldet, dass ACK ein Fragment für den Stream empfangen wurde. -
getStreamClosedCallback
— Meldet einen Zustand, in dem der Stream geschlossen ist. -
getStreamConnectionStaleCallback
— Meldet einen veralteten Verbindungszustand. In diesem Zustand sendet der Hersteller Daten an den Dienst, erhält jedoch keine Bestätigungen. -
getStreamDataAvailableCallback
— Meldet, dass Daten im Stream verfügbar sind. -
getStreamErrorReportCallback
— Meldet einen Stream-Fehler. -
getStreamLatencyPressureCallback
— Meldet einen Zustand der Stream-Latenz, wenn die kumulierte Puffergröße größer als dermax_latency
Wert ist. Weitere Informationen finden Sie unter StreamDefinition/StreamInfo. -
getStreamReadyCallback
: — Meldet einen Zustand, in dem der Stream bereit ist. -
getStreamUnderflowReportCallback
— Meldet einen Zustand, in dem der Stream unterläuft. Diese Funktion wird derzeit nicht verwendet und ist für die future Verwendung reserviert.
Den Quellcode für finden Sie StreamCallbackProvider
unter StreamCallbackProvider.h.
ClientCallbacks Struktur
Die ClientCallbacks
Struktur enthält die Einstiegspunkte der Callback-Funktion, die PIC aufgerufen wird, wenn bestimmte Ereignisse eintreten. Die Struktur enthält auch Versionsinformationen im Feld CALLBACKS_CURRENT_VERSION
sowie das Feld customData
mit benutzerdefinierten Daten, die für einzelne Callback-Funktionen zurückgegeben werden.
Die Client-Anwendung kann einen this
-Zeiger für das Feld custom_data
verwenden, um Mitgliedsfunktionen den statischen ClientCallback
-Funktionen während der Laufzeit zuzuweisen, wie im folgenden Codebeispiel gezeigt:
STATUS TestStreamCallbackProvider::streamClosedHandler(UINT64 custom_data, STREAM_HANDLE stream_handle, UINT64 stream_upload_handle) { LOG_INFO("Reporting stream stopped."); TestStreamCallbackProvider* streamCallbackProvider = reinterpret_cast<TestStreamCallbackProvider*> (custom_data); streamCallbackProvider->streamClosedHandler(...);
Funktion | Beschreibung | Typ |
---|---|---|
CreateDeviceFunc |
Derzeit nicht im Backend implementiert. Dieser Aufruf schlägt fehl, wenn er mit Java oder C++ ausgeführt wird. Andere Clients führen eine plattformspezifische Initialisierung durch. | Backend API |
CreateStreamFunc |
Wird beim Erstellen des Streams aufgerufen | Backend API |
DescribeStreamFunc |
Wird aufgerufen, wenn DescribeStream aufgerufen wird |
Backend API |
GetStreamingEndpointFunc |
Wird aufgerufen, wenn GetStreamingEndpoint aufgerufen wird |
Backend API |
GetStreamingTokenFunc |
Wird aufgerufen, wenn GetStreamingToken aufgerufen wird |
Backend API |
PutStreamFunc |
Wird aufgerufen, wenn PutStream aufgerufen wird |
Backend API |
TagResourceFunc |
Wird aufgerufen, wenn TagResource aufgerufen wird |
Backend API |
CreateMutexFunc |
Erstellt einen Synchronisierungs-Mutex. | Synchronisierung |
FreeMutexFunc |
Gibt den Mutex frei. | Synchronisierung |
LockMutexFunc |
Sperrt den Synchronisierungs-Mutex. | Synchronisierung |
TryLockMutexFunc |
Versucht den Mutex zu sperren. Derzeit nicht implementiert. | Synchronisierung |
UnlockMutexFunc |
Hebt die Sperrung des Mutex auf. | Synchronisierung |
ClientReadyFunc |
Wird aufgerufen, wenn der Client bereit ist. | Benachrichtigung |
DroppedFrameReportFunc |
Meldet, wenn ein Frame verworfen wird. | Benachrichtigung |
DroppedFragmentReportFunc |
Meldet, wenn ein Fragment verworfen wird. Diese Funktion wird derzeit nicht verwendet und ist für die future Verwendung reserviert. | Benachrichtigung |
FragmentAckReceivedFunc |
Wird aufgerufen, wenn ein Fragment ACK (Pufferung, Empfang, Persistenz und Fehler) empfangen wird. | Benachrichtigung |
StorageOverflowPressureFunc |
Wird aufgerufen, wenn die Speichernutzung den Wert STORAGE_PRESSURE_NOTIFICATION_THRESHOLD , also 5 Prozent der Gesamtspeichergröße, unterschreitet. |
Benachrichtigung |
StreamClosedFunc |
Wird aufgerufen, wenn die letzten Bits der verbleibenden Frames gestreamt werden. | Benachrichtigung |
StreamConnectionStaleFunc |
Wird aufgerufen, wenn der Stream veraltet ist. In diesem Fall sendet der Produzent Daten an den Service, empfängt jedoch keine Bestätigungen. | Benachrichtigung |
StreamDataAvailableFunc |
Wird aufgerufen, wenn Stream-Daten verfügbar sind. | Benachrichtigung |
StreamErrorReportFunc |
Wird aufgerufen, wenn ein Stream-Fehler auftritt. Unter dieser PIC Bedingung wird der Stream automatisch geschlossen. | Benachrichtigung |
StreamLatencyPressureFunc |
Wird aufgerufen, wenn der Stream latent ist, d. h. die kumulierte Puffergröße den Wert max_latency überschreitet. Weitere Informationen finden Sie unter StreamDefinition/StreamInfo. |
Benachrichtigung |
StreamReadyFunc |
Wird aufgerufen, wenn der Stream bereit ist. | Benachrichtigung |
StreamUnderflowReportFunc |
Diese Funktion wird derzeit nicht verwendet und ist für die future Verwendung reserviert. | Benachrichtigung |
DeviceCertToTokenFunc |
Gibt das Verbindungszertifikat als Token zurück. | Plattformintegration |
GetCurrentTimeFunc |
Gibt die aktuelle Zeit zurück. | Plattformintegration |
GetDeviceCertificateFunc |
Gibt das Gerätezertifikat zurück. Diese Funktion wird derzeit nicht verwendet und ist für die future Verwendung reserviert. | Plattformintegration |
GetDeviceFingerprintFunc |
Gibt die Geräteidentifikation zurück. Diese Funktion wird derzeit nicht verwendet und ist für die future Verwendung reserviert. | Plattformintegration |
GetRandomNumberFunc |
Gibt eine zufällige Zahl zwischen 0 und RAND_MAX zurück. |
Plattformintegration |
GetSecurityTokenFunc |
Gibt das Sicherheitstoken zurück, das an die Funktionen übergeben wurde, die mit dem Backend API kommunizieren. Die Implementierung kann die serialisierten Werte für AccessKeyId , SecretKeyId und das Sitzungstoken angeben. |
Plattformintegration |
LogPrintFunc |
Protokolliert eine Textzeile mit dem Tag und der Protokollebene. Weitere Informationen finden Sie unter PlatformUtils.h . |
Plattformintegration |
Für die Plattformintegrationsfunktionen aus der vorherigen Tabelle ist der letzte Parameter eine ServiceCallContext
-Struktur mit den folgenden Feldern:
-
version
: Die Version der Struktur -
callAfter
: Eine absolute Zeit, nach der die Funktion aufgerufen wird -
timeout
: Die Zeitüberschreitung der Operation in Einheiten von 100 Nanosekunden -
customData
: Ein benutzerdefinierter Wert, der an den Client übergeben wird -
pAuthInfo
: Die Anmeldeinformationen für den Aufruf. Weitere Informationen finden Sie in der folgenden (__AuthInfo
)-Struktur.
Die Autorisierungsinformationen werden mit der Struktur __AuthInfo
bereitgestellt. Diese kann entweder serialisierte Anmeldeinformationen oder ein anbieterspezifisches Authentifizierungstoken enthalten. Diese Struktur enthält die folgenden Felder:
-
version
: Die Version der__AuthInfo
-Struktur -
type
: EinAUTH_INFO_TYPE
-Wert, über den der Typ der Anmeldeinformationen (Zertifikat oder Sicherheitstoken) definiert wird -
data
: Ein Byte-Array mit den Authentifizierungsinformationen -
size
: Die Größe desdata
-Parameters -
expiration
: Die Ablaufdauer der Anmeldeinformationen in Einheiten von 100 Nanosekunden
Callback-Implementierungen, um das Streaming erneut zu versuchen
Der Kinesis Video Producer SDK stellt den Status des Streamings über Callback-Funktionen zur Verfügung. Es wird empfohlen, die folgenden Rückrufmechanismen zu implementieren, um bei vorübergehenden Netzwerkproblemen, die während des Streamings aufgetreten sind, die Wiederherstellung zu gewährleisten.
-
Stream-Latenzdruck-Callback — Dieser Callback-Mechanismus wird ausgelöst, wenn ein SDK Stream-Latenzproblem auftritt. Dies passiert, wenn die kumulierte Puffergröße größer als der Wert MAX _ LATENCY ist. Wenn der Stream erstellt wird, setzt die Streaming-Anwendung MAX _ LATENCY auf den Standardwert von 60 Sekunden. Die typische Implementierung für diesen Callback besteht darin, die Verbindung zurückzusetzen. Sie können die Beispielimplementierung unter https://github.com/awslabs/amazon-kinesis-video-streams- producer-sdk-cpp /blob/master/ kinesis-video-c-producer StreamLatencyStateMachine /src/source/
.c nach Bedarf verwenden. Beachten Sie, dass es keine Möglichkeit gibt, Frames, die aufgrund eines Netzwerkausfalls nicht zugestellt wurden, in einem sekundären Speicher zu speichern, damit sie wieder aufgefüllt werden können. -
Stream-Staleness-Callback — Dieser Callback wird ausgelöst, wenn der Producer Daten an den Amazon Kinesis Data Streams Streams-Service (Uplink) senden kann, aber die Bestätigungen (gepuffert) nicht rechtzeitig zurückholen kann (Standard ist 60 SekundenACK). Abhängig von den Netzwerkeinstellungen kann entweder der Stream-Latenzdruck-Callback oder der Stream-Staleness-Callback oder beide initiiert werden. Ähnlich wie bei der Wiederholungsversuchimplementierung des Callbacks für Stream-Latenzdruck besteht die typische Implementierung darin, die Verbindung zurückzusetzen und eine neue Verbindung für das Streaming zu starten. Sie können die Beispielimplementierung unter https://github.com/awslabs/amazon-kinesis-video-streamsConnectionStaleStateMachine-producer-c/blob/master/src/source/
.c nach Bedarf verwenden. -
Rückruf bei Stream-Fehlern — Dieser Callback wird ausgelöst, wenn beim Aufruf der Service-Aufrufe ein Timeout bei der SDK Netzwerkverbindung oder andere Fehler auftreten. KVS API
-
Frame-Callback gelöscht — dieser Callback wird ausgelöst, wenn die Speichergröße voll ist, entweder aufgrund einer langsamen Netzwerkgeschwindigkeit oder eines Streamfehlers. Wenn die Netzwerkgeschwindigkeit dazu führt, dass Frames verloren gehen, können Sie entweder die Speichergröße erhöhen, die Videobildgröße reduzieren oder die Bildrate an die Netzwerkgeschwindigkeit anpassen.