本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
生產者SDK回調
Amazon Kinesis Video Streams 製作者中的類別和方法SDK不會維護自己的程序。反之,他們會使用傳入的功能呼叫和事件來排程回呼與應用程式通訊。
應用程式可以使用兩種回呼模式與下列項目進行互動SDK:
-
CallbackProvider
— 此物件會將來自平台無關的 code (PIC) 元件的每個回呼公開至應用程式。這種模式允許完整的功能,但這也意味著實現必須處理 C ++ 層中的所有公共API方法和簽名。 -
StreamCallbackProvider和 ClientCallbackProvider-這些對象公開了特定於流和客戶端特定的回調,並且 C ++ 層公開SDK了其餘的回調。這是與生產者交互的首選回調模式SDK。
下圖說明回呼物件的物件模型:
在前面的圖表中,DefaultCallbackProvider
衍生自 CallbackProvider
(公開中的所有回呼PIC) 並包含和。StreamCallbackProvider
ClientCallbackProvider
ClientCallbackProvider
ClientCallbackProvider
用戶端層級回呼函數公開的物件。函數的詳細資訊說明在 ClientCallbacks 結構 節。
回呼方法:
-
getClientReadyCallback
— 報告用戶端的就緒狀態。 -
getStorageOverflowPressureCallback
— 報告儲存空間溢位或壓力。此回呼稱為當儲存使用率低於STORAGE_PRESSURE_NOTIFICATION_THRESHOLD
值,這是 5% 的整體儲存大小。如需詳細資訊,請參閱StorageInfo。
StreamCallbackProvider
StreamCallbackProvider
串流層級回呼函數公開的物件。
回呼方法:
-
getDroppedFragmentReportCallback
:報告捨棄的片段。 -
getDroppedFrameReportCallback
— 報告丟棄的框架。 -
getFragmentAckReceivedCallback
— 報告收到串流的片段ACK。 -
getStreamClosedCallback
— 報告流關閉條件。 -
getStreamConnectionStaleCallback
— 報告過時的連線狀況。在這種情況下,生產者正在向服務發送數據,但沒有收到確認。 -
getStreamDataAvailableCallback
— 報告資料流中可用的資料。 -
getStreamErrorReportCallback
— 報告串流錯誤情況。 -
getStreamLatencyPressureCallback
— 報告串流延遲情況,也就是累積緩衝區大小大於max_latency
值時。如需詳細資訊,請參閱StreamDefinition/StreamInfo。 -
getStreamReadyCallback
: — 報告資料流就緒條件。 -
getStreamUnderflowReportCallback
— 報告資料流下溢狀況。此功能目前未使用,並保留供 future 使用。
如需的原始程式碼StreamCallbackProvider
,請參閱 StreamCallbackProvider.h
ClientCallbacks 結構
該ClientCallbacks
結構包含回調函數進入點,該入口點在特定事件發生時PIC調用。結構也包含版本資訊 CALLBACKS_CURRENT_VERSION
的欄位,以及 customData
欄位使用者定義資料回傳的個別回呼功能。
用戶端應用程式可以使用 this
指標 custom_data
欄位到對應成員函數的靜態 ClientCallback
函數在執行時間,如下列程式碼範例所示:
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(...);
函式 | Description (描述) | Type |
---|---|---|
CreateDeviceFunc |
目前並未在後端實作。從 Java 或 C++ 呼叫時發生故障。其他用戶端執行平台特定的初始化。 | 後端 API |
CreateStreamFunc |
建立串流時呼叫。 | 後端 API |
DescribeStreamFunc |
呼叫 DescribeStream 時已呼叫。 |
後端 API |
GetStreamingEndpointFunc |
呼叫 GetStreamingEndpoint 時已呼叫。 |
後端 API |
GetStreamingTokenFunc |
呼叫 GetStreamingToken 時已呼叫。 |
後端 API |
PutStreamFunc |
呼叫 PutStream 時已呼叫。 |
後端 API |
TagResourceFunc |
呼叫 TagResource 時已呼叫。 |
後端 API |
CreateMutexFunc |
建立同步互斥。 | 同步 |
FreeMutexFunc |
釋放互斥。 | 同步 |
LockMutexFunc |
鎖定同步互斥。 | 同步 |
TryLockMutexFunc |
嘗試鎖定互斥。目前並未實作。 | 同步 |
UnlockMutexFunc |
解除鎖定互斥。 | 同步 |
ClientReadyFunc |
當用戶端進入就緒狀態時呼叫。 | 通知 |
DroppedFrameReportFunc |
當影格已刪除時報告。 | 通知 |
DroppedFragmentReportFunc |
當片段已刪除時報告。此功能目前未使用,並保留供 future 使用。 | 通知 |
FragmentAckReceivedFunc |
收到片段ACK(緩衝,接收,持續和錯誤)時調用。 | 通知 |
StorageOverflowPressureFunc |
當儲存使用率低於 STORAGE_PRESSURE_NOTIFICATION_THRESHOLD 值時呼叫,這是定義為 5% 的整體儲存大小。 |
通知 |
StreamClosedFunc |
當呼叫最後位元串流的剩餘影格。 | 通知 |
StreamConnectionStaleFunc |
當串流輸入過時連線狀態時呼叫。在這個條件,是製作者傳送資料到服務但未收到確認。 | 通知 |
StreamDataAvailableFunc |
串流資料可用時呼叫。 | 通知 |
StreamErrorReportFunc |
出現串流錯誤時呼叫。在此情況下PIC會自動關閉串流。 | 通知 |
StreamLatencyPressureFunc |
串流進入延遲條件時呼叫,這是當累計緩衝大小大於 max_latency 值。如需詳細資訊,請參閱StreamDefinition/StreamInfo。 |
通知 |
StreamReadyFunc |
當串流進入就緒狀態時呼叫。 | 通知 |
StreamUnderflowReportFunc |
此功能目前未使用,並保留供 future 使用。 | 通知 |
DeviceCertToTokenFunc |
傳回連線憑證為字符。 | 平台整合 |
GetCurrentTimeFunc |
傳回目前的時間。 | 平台整合 |
GetDeviceCertificateFunc |
傳回裝置憑證。此功能目前未使用,並保留供 future 使用。 | 平台整合 |
GetDeviceFingerprintFunc |
傳回裝置指紋。此功能目前未使用,並保留供 future 使用。 | 平台整合 |
GetRandomNumberFunc |
傳回一隨機編號介於 0 和 RAND_MAX 之間。 |
平台整合 |
GetSecurityTokenFunc |
返回傳遞給與後端通信的函數的安全令牌API。此實作可指定序列化 AccessKeyId ,SecretKeyId 以及工作階段字符。 |
平台整合 |
LogPrintFunc |
文字行日誌與標籤和日誌層級。如需詳細資訊,請參閱PlatformUtils.h 。 |
平台整合 |
對於先前表格的平台整合功能,最後參數是一種 ServiceCallContext
架構,其中包含下列欄位:
-
version
:此結構的版本。 -
callAfter
:絕對時間之後的呼叫函數。 -
timeout
:逾時在 100 奈米秒單位的操作。 -
customData
:使用者定義的值傳回用戶端。 -
pAuthInfo
:呼叫的登入資料。如需詳細資訊,請參閱下列 (__AuthInfo
) 結構。
授權資訊提供使用的 __AuthInfo
結構,這可以是序列化登入資料或提供者特定身分驗證字符。此架構包含下列欄位:
-
version
:此版本的__AuthInfo
結構。 -
type
:AUTH_INFO_TYPE
數值定義登入資料類型 (憑證或安全字符)。 -
data
:位元組陣列包含身分驗證資訊。 -
size
:參數data
的大小。 -
expiration
:登入資料在 100 奈米秒單位過期。
重試流式傳輸的回調實現
Kinesis 視訊製作人透過回呼函數SDK提供串流的狀態。我們建議您實作下列回呼機制,以便從串流期間遇到的任何暫時網路問題中復原。
-
串流延遲壓力回呼-當SDK遇到串流延遲條件時,就會啟動此回呼機制。當累積緩衝區大小大於 MAX _ LATENCY 值時,就會發生這種情況。建立串流時,串流應用程式會LATENCY將 MAX _ 設定為預設值 60 秒。此回呼的典型實作是重設連線。您可以根據需要在 https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp /blob/主/ /src/源/ kinesis-video-c-producer
.c 處使用示例實現。StreamLatencyStateMachine請注意,沒有選項可以將由於網絡中斷而未傳遞的幀存儲到輔助存儲中以進行回填。 -
串流失效回呼-當生產者可以將資料傳送至 Amazon Kinesis Data Streams 服務 (上行) 但無法及時取得確認 (緩衝) 時,便會啟動此回呼 (預設值為 60 秒ACK)。視網路設定而定,串流延遲壓力回呼或串流失效回呼,或兩者皆可啟動。與串流延遲壓力回呼重試實作類似,典型實作是重設連線並開始新的串流連線。您可以根據需要在 https://github.com/awslabs/amazon-kinesis-video-streams-生產者-c/blob/主/src/源/ ConnectionStaleStateMachine
.c 處使用示例實現。 -
流錯誤回調-當在調用KVSAPI服務調用期間SDK遇到網絡連接或其他錯誤超時,此回調被啟動。
-
丟棄幀回調-當存儲大小已滿,無論是因為網絡速度慢或流錯誤,這個回調被啟動。如果網路速度導致影格下降,您可以增加儲存大小、縮小視訊影格大小或影格速率以符合網路速度。