翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
プロデューサー SDK コールバック
Amazon Kinesis Video Streams プロデューサー SDK のクラスとメソッドは、独自のプロセスを維持しません。その代わり、受信した関数呼び出しとイベントを使用してコールバックをスケジュールし、アプリケーションと通信します。
アプリケーションが SDK とやり取りするために使用できるコールバックパターンは 2 つあります。
- 
                
CallbackProvider– このオブジェクトは、プラットフォームに依存しないコード (PIC) コンポーネントからのすべてのコールバックをアプリケーションに公開します。このパターンではすべての機能を使用できますが、実装では C++ レイヤーにあるすべてのパブリック API メソッドと署名を処理する必要があります。 - 
                
StreamCallbackProvider および ClientCallbackProvider – これらのオブジェクトは、ストリーム固有およびクライアント固有のコールバックを公開し、SDK の C++ レイヤーは残りのコールバックを公開します。これは、プロデューサー 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– ストリームのアンダーフロー条件をレポートします。この関数は現在使用されておらず、将来の使用のために予約されています。 
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(...);
| 関数 | 説明 | [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 | 
                            クライアントが準備完了状態になると呼び出されます。 | Notification | 
DroppedFrameReportFunc | 
                            フレームが削除されたときに報告されます。 | Notification | 
DroppedFragmentReportFunc | 
                            フラグメントが削除されたときに報告されます。この関数は現在使用されておらず、将来の使用のために予約されています。 | Notification | 
FragmentAckReceivedFunc | 
                            フラグメント ACK (バッファリング、受信、保持、エラー) が受信されたときに呼び出されます。 | Notification | 
StorageOverflowPressureFunc | 
                            ストレージの使用率が STORAGE_PRESSURE_NOTIFICATION_THRESHOLD 値 (ストレージ全体のサイズの 5 パーセントとして定義) に下がると呼び出されます。 | 
                            Notification | 
StreamClosedFunc | 
                            残りのフレームの最後のビットがストリーミングされたときに呼び出されます。 | Notification | 
StreamConnectionStaleFunc | 
                            ストリームが古い接続状態になると呼び出されます。この状況では、プロデューサーはサービスにデータを送信していますが、送達確認を受信していません。 | Notification | 
StreamDataAvailableFunc | 
                            ストリームデータが使用可能になったときに呼び出されます。 | Notification | 
StreamErrorReportFunc | 
                            ストリームエラーが発生したときに呼び出されます。この状況になると、PIC はストリームを自動的に閉じます。 | Notification | 
StreamLatencyPressureFunc | 
                            ストリームがレイテンシー状態になったときに呼び出されます。蓄積されたバッファのサイズが max_latency 値より大きくなった場合です。詳細については、「StreamDefinition/StreamInfo」を参照してください。 | 
                            Notification | 
StreamReadyFunc | 
                            ストリームが準備完了状態になると呼び出されます。 | Notification | 
StreamUnderflowReportFunc | 
                            この関数は現在使用されておらず、将来の使用のために予約されています。 | Notification | 
DeviceCertToTokenFunc | 
                            接続証明書をトークンとして返します。 | プラットフォーム統合 | 
GetCurrentTimeFunc | 
                            現在時刻を返します。 | プラットフォーム統合 | 
GetDeviceCertificateFunc | 
                            デバイス証明書を返します。この関数は現在使用されておらず、将来の使用のために予約されています。 | プラットフォーム統合 | 
GetDeviceFingerprintFunc | 
                            デバイスフィンガープリントを返します。この関数は現在使用されておらず、将来の使用のために予約されています。 | プラットフォーム統合 | 
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 Video プロデューサー SDK は、コールバック関数を使用して、ストリーミングのステータスを提供します。ストリーミング中に発生した一時的なネットワーク問題から回復するには、次のコールバックメカニズムを実装することをお勧めします。
- 
                    
ストリームレイテンシープレッシャーコールバック - このコールバックメカニズムは、SDK がストリームレイテンシー条件に遭遇したときに開始されます。このトリガーは、累積バッファサイズが MAX_LATENCY 値より大きい場合に発生します。ストリームが作成されると、ストリーミングアプリケーションによって MAX_LATENCY がデフォルト値の 60 秒に設定されます。このコールバックの一般的な実装として、接続をリセットします。必要に応じて、https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/kinesis-video-c-producer/src/source/StreamLatencyStateMachine.c
のサンプル実装を使用することができます。ネットワーク停止による未配信のフレームを、バックフィル用のセカンダリストレージに保存することはできません。  - 
                    
ストリームの古さコールバック - このコールバックは、プロデューサーが Amazon Kinesis Data Streams サービス (アップリンク) にデータを送信できるが、確認応答 (バッファされた ACK) を時間に戻すことができない (デフォルトは 60 秒) 場合に開始されます。ネットワーク設定に応じて、ストリームレイテンシープレッシャーコールバックまたはストリームの古さコールバック、またはその両方が開始されます。ストリームのレイテンシープレッシャーコールバックの再試行の実装と同様に、一般的な実装として、接続をリセットし、ストリーミング用に新しい接続を開始します。必要に応じて、https://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/src/source/ConnectionStaleStateMachine.c
のサンプル実装を使用することができます。  - 
                    
ストリームエラーコールバック - このコールバックは、SDK が KVS API サービスコールの呼び出し中にネットワーク接続でタイムアウトやその他のエラーが発生したときに開始されます。
 - 
                    
ドロップフレームコールバック - このコールバックは、ネットワーク速度が遅いか、ストリームエラーが原因でストレージサイズがいっぱいになると開始されます。ネットワーク速度によってフレームがドロップされた場合は、ストレージサイズを増やすか、ビデオフレームサイズを減らすか、ネットワーク速度に合わせてフレームレートを下げます。