Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Callback del produttore SDK
Le classi e i metodi di Amazon Kinesis Video SDK Streams Producer non mantengono processi propri. Vengono, invece, utilizzate le chiamate di funzione in ingresso e gli eventi per programmare callback e comunicare con l'applicazione.
Esistono due modelli di callback che l'applicazione può utilizzare per interagire con: SDK
-
CallbackProvider
— Questo oggetto espone ogni callback dal componente code (PIC) indipendente dalla piattaforma all'applicazione. Questo modello consente la piena funzionalità, ma significa anche che l'implementazione deve gestire tutti i API metodi e le firme pubblici nel livello C++. -
StreamCallbackProvidere ClientCallbackProvider — Questi oggetti espongono i callback specifici del flusso e del client, mentre il livello C++ espone il resto dei callback. SDK Questo è il pattern di callback preferito per interagire con il Producer. SDK
Il seguente diagramma mostra il modello di oggetti callback:
Nel diagramma precedente, DefaultCallbackProvider
deriva da CallbackProvider
(che espone tutte le callback presenti in) e contiene e. PIC StreamCallbackProvider
ClientCallbackProvider
Questo argomento contiene le sezioni seguenti:
ClientCallbackProvider
L'oggetto ClientCallbackProvider
espone le funzioni di callback a livello di client. I dettagli delle funzioni sono descritti nella sezione ClientCallbacks struttura.
Metodi di callback:
-
getClientReadyCallback
— Segnala lo stato di «pronto» per il client. -
getStorageOverflowPressureCallback
— Segnala il sovraccarico o la pressione dello storage. Questo callback viene chiamato quando l'utilizzo dello storage è inferiore al valoreSTORAGE_PRESSURE_NOTIFICATION_THRESHOLD
, pari al 5% delle dimensioni dello spazio di archiviazione generale. Per ulteriori informazioni, consulta StorageInfo.
StreamCallbackProvider
L'oggetto StreamCallbackProvider
espone le funzioni di callback a livello di flusso.
Metodi di callback:
-
getDroppedFragmentReportCallback
: segnala un frammento interrotto. -
getDroppedFrameReportCallback
— Segnala un frame perso. -
getFragmentAckReceivedCallback
— Segnala che ACK è stato ricevuto un frammento per lo stream. -
getStreamClosedCallback
— Segnala una condizione di chiusura dello stream. -
getStreamConnectionStaleCallback
— Segnala una condizione di connessione obsoleta. In questa condizione, il produttore invia dati al servizio ma non riceve riconoscimenti. -
getStreamDataAvailableCallback
— Segnala che i dati sono disponibili nello stream. -
getStreamErrorReportCallback
— Segnala una condizione di errore dello stream. -
getStreamLatencyPressureCallback
— Segnala una condizione di latenza del flusso, ovvero quando la dimensione del buffer accumulato è maggiore del valore.max_latency
Per ulteriori informazioni, consulta StreamDefinition/StreamInfo. -
getStreamReadyCallback
: —Riporta una condizione di disponibilità dello stream. -
getStreamUnderflowReportCallback
— Segnala una condizione di sottoflusso del flusso. Questa funzione non è attualmente utilizzata ed è riservata per utilizzi futuri.
Per il codice sorgente diStreamCallbackProvider
, vedere StreamCallbackProvider.h.
ClientCallbacks struttura
La ClientCallbacks
struttura contiene i punti di ingresso della funzione di callback che le PIC chiama quando si verificano eventi specifici. La struttura, inoltre, contiene le informazioni sulla versione nel campo CALLBACKS_CURRENT_VERSION
e un campo customData
per i dati definiti dall'utente che vengono restituiti con le singole funzioni di callback.
L'applicazione client può utilizzare un puntatore this
per il campo custom_data
per mappare le funzioni membro per le funzioni statiche ClientCallback
in fase di runtime, come mostra il seguente codice di esempio:
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(...);
Funzione | Descrizione | Tipo |
---|---|---|
CreateDeviceFunc |
Non attualmente implementato nel back-end. Questa chiamata ha esito negativo quando viene effettuata da Java o C++. Altri client eseguono l'inizializzazione specifica per piattaforma. | Backend API |
CreateStreamFunc |
Chiamata al momento della creazione del flusso | Backend API |
DescribeStreamFunc |
Chiamata con DescribeStream . |
Backend API |
GetStreamingEndpointFunc |
Chiamata con GetStreamingEndpoint . |
Backend API |
GetStreamingTokenFunc |
Chiamata con GetStreamingToken . |
Backend API |
PutStreamFunc |
Chiamata con PutStream . |
Backend API |
TagResourceFunc |
Chiamata con TagResource . |
Backend API |
CreateMutexFunc |
Crea un mutex per la sincronizzazione. | Sincronizzazione |
FreeMutexFunc |
Libera il mutex. | Sincronizzazione |
LockMutexFunc |
Blocca il mutex di sincronizzazione. | Sincronizzazione |
TryLockMutexFunc |
Tenta di bloccare il mutex. Non attualmente implementato. | Sincronizzazione |
UnlockMutexFunc |
Sblocca il mutex. | Sincronizzazione |
ClientReadyFunc |
Viene chiamato quando il client entra nello stato pronto. | Notification |
DroppedFrameReportFunc |
Segnala quando un fotogramma viene interrotto. | Notification |
DroppedFragmentReportFunc |
Segnala quando un frammento viene interrotto. Questa funzione non è attualmente utilizzata ed è riservata per utilizzi futuri. | Notification |
FragmentAckReceivedFunc |
Chiamato quando viene ricevuto un frammento ACK (buffering, ricevuto, persistente ed errore). | Notification |
StorageOverflowPressureFunc |
Chiamato quando l'utilizzo dello storage è al di sotto del valore STORAGE_PRESSURE_NOTIFICATION_THRESHOLD , pari al 5% delle dimensioni dello spazio di archiviazione generale. |
Notification |
StreamClosedFunc |
Chiamato quando vengono trasmessi gli ultimi bit dei fotogrammi rimanenti. | Notification |
StreamConnectionStaleFunc |
Chiamato quando il flusso entra in uno stato di connessione obsoleto. In questa condizione, il produttore invia dati al servizio, ma non riceve conferme. | Notification |
StreamDataAvailableFunc |
Chiamato quando sono disponibili i dati di flusso. | Notification |
StreamErrorReportFunc |
Chiamato quando si verifica un errore di flusso. In questa condizione lo stream PIC viene chiuso automaticamente. | Notification |
StreamLatencyPressureFunc |
Chiamato quando il flusso entra in una condizione di latenza, quando la dimensione del buffer accumulata è superiore al valore max_latency . Per ulteriori informazioni, consulta StreamDefinition/StreamInfo. |
Notification |
StreamReadyFunc |
Viene chiamato quando il flusso entra nello stato pronto. | Notification |
StreamUnderflowReportFunc |
Questa funzione non è attualmente utilizzata ed è riservata per utilizzi futuri. | Notification |
DeviceCertToTokenFunc |
Restituisce il certificato di connessione come token. | Integrazione con la piattaforma |
GetCurrentTimeFunc |
Restituisce l'orario attuale. | Integrazione con la piattaforma |
GetDeviceCertificateFunc |
Restituisce il certificato del dispositivo. Questa funzione non è attualmente utilizzata ed è riservata per utilizzi futuri. | Integrazione con la piattaforma |
GetDeviceFingerprintFunc |
Restituisce l'impronta del dispositivo. Questa funzione non è attualmente utilizzata ed è riservata per utilizzi futuri. | Integrazione con la piattaforma |
GetRandomNumberFunc |
Restituisce un numero casuale compreso tra 0 e RAND_MAX . |
Integrazione con la piattaforma |
GetSecurityTokenFunc |
Restituisce il token di sicurezza passato alle funzioni che comunicano con il backendAPI. L'implementazione è in grado di specificare i AccessKeyId e SecretKeyId serializzati e il token della sessione. |
Integrazione con la piattaforma |
LogPrintFunc |
Registra una riga di testo con il tag e il livello di log. Per ulteriori informazioni, consulta PlatformUtils.h . |
Integrazione con la piattaforma |
Per le funzioni di integrazione della piattaforma nella tabella precedente, l'ultimo parametro è una struttura ServiceCallContext
, che include i campi riportati di seguito:
-
version
: la versione della strut. -
callAfter
: un tempo assoluto dopo il quale per chiamare la funzione. -
timeout
: il timeout dell'operazione in unità di 100 nanosecondi. -
customData
: un valore definito dall'utente da passare al client. -
pAuthInfo
: le credenziali per la chiamata. Per maggiori informazioni, consultare la seguente struttura (__AuthInfo
).
Le informazioni di autorizzazione vengono fornite utilizzando la struttura __AuthInfo
che può essere credenziali serializzate o un token di autenticazione specifico del provider. Questa struttura include i campi riportati di seguito:
-
version
: la versione della struttura__AuthInfo
. -
type
: un valoreAUTH_INFO_TYPE
che definisce il tipo di credenziale (certificato o token di sicurezza). -
data
: un array di byte contenente le informazioni di autenticazione. -
size
: la dimensione del parametrodata
. -
expiration
: la scadenza delle credenziali in unità di 100 nanosecondi.
Implementazioni di callback per riprovare lo streaming
Kinesis Video Producer SDK fornisce lo stato dello streaming tramite funzioni di callback. Ti consigliamo di implementare i seguenti meccanismi di callback per risolvere eventuali problemi di rete momentanei riscontrati durante lo streaming.
-
Stream Latency Pressure Callback: questo meccanismo di callback viene avviato quando si verifica una condizione di latenza del SDK flusso. Ciò accade quando la dimensione del buffer accumulato è maggiore del valore _. MAX LATENCY Quando viene creato lo stream, l'applicazione di streaming imposta MAX _ LATENCY sul valore predefinito di 60 secondi. L'implementazione tipica per questo callback è il ripristino della connessione. È possibile utilizzare l'implementazione di esempio in https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/kinesis-video-c-producer/src/source/StreamLatencyStateMachine.c
in base alle esigenze. Tieni presente che non è possibile archiviare i frame non consegnati a causa di un'interruzione della rete in uno storage secondario per il riempimento. -
Stream staleness callback: questo callback viene avviato quando il produttore può inviare dati al servizio Amazon Kinesis Data Streams (uplink) ma non è in grado di recuperare i riconoscimenti (memorizzati nel buffer) indietro nel tempo (ACKl'impostazione predefinita è 60 secondi). A seconda delle impostazioni di rete, è possibile avviare il callback stream latency pressure o lo stream staleness callback, oppure entrambi. Analogamente all'implementazione del nuovo tentativo di callback di utilizzo della latenza del flusso, l'implementazione tipica consiste nel ripristinare la connessione e avviare una nuova connessione per lo streaming. È possibile utilizzare l'implementazione di esempio in -producer-c/ .c in base alle esigenze https://github.com/awslabs/amazon-kinesis-video-streams. blob/master/src/source/ConnectionStaleStateMachine
-
Stream error callback: questa callback viene avviata quando si verifica un timeout nella connessione di rete SDK o altri errori durante la chiamata alle chiamate di servizio. KVS API
-
Dropped frame callback: questo callback viene avviato quando lo spazio di archiviazione è pieno, a causa della bassa velocità di rete o di un errore di streaming. Se la velocità della rete comporta la perdita di fotogrammi, è possibile aumentare le dimensioni di archiviazione, ridurre le dimensioni dei fotogrammi video o la frequenza dei fotogrammi in modo che corrisponda alla velocità della rete.