プロデューサーSDK構造 - Amazon Kinesis Video Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

プロデューサーSDK構造

このセクションでは、データを Kinesis Video Streams Producer オブジェクトに提供するために使用できる構造について説明します。

DeviceInfo/DefaultDeviceInfoProvider

DeviceInfo および DefaultDeviceInfoProvider オブジェクトは、Kinesis Video Streams プロデューサーオブジェクトの動作を制御します。

メンバーフィールド

  • version – 正しいバージョンの構造が現在のバージョンのコードベースで使用されることを確認するために使用される整数値。現行バージョンは、DEVICE_INFO_CURRENT_VERSION マクロを使用して指定します。

  • name – 人間が読み取れるデバイスの名前。

  • tagCount/tags – 現在使用されていません。

  • streamCount – デバイスが処理できるストリームの最大数。これにより、最初にストリームを指すポインターのストレージが事前に割り当てられますが、実際のストリームオブジェクトは後で作成されます。デフォルトは 16 ストリームですが、この数は DefaultDeviceInfoProvider.cpp ファイルで変更できます。

  • storageInfo: メインストレージ設定を記述するオブジェクト。詳細については、「StorageInfo」を参照してください。

StorageInfo

Kinesis Video Streams のメインストレージの設定を指定します。

デフォルトの実装は、ストリーミング向けに最適化された、断片化の少ない高速なヒープ実装に基づきます。使用する MEMALLOC アロケータは、特定のプラットフォームで上書きできます。一部のプラットフォームにおける仮想メモリの割り当ては、物理ページでバッキングされません。メモリが使用されると、仮想ページは物理ページでバッキングされます。これにより、ストレージの使用率が低いときは、システム全体のメモリ負荷が低くなります。

デフォルトのストレージサイズを次の式に基づいて計算します。DefragmentationFactor は 1.2 (20 パーセント) に設定する必要があります。

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

次の例では、デバイスに音声ストリームとビデオストリームがあります。音声ストリームには 1 秒あたり 512 サンプルがあり、各サンプルは平均 100 バイトです。ビデオストリームには 1 秒あたり 25 サンプルがあり、各サンプルは平均 10,000 バイトです。各ストリームのバッファ期間は 3 分です。

Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.

デバイスに使用可能なメモリが多い場合は、深刻なフラグメント化を避けるために、ストレージにメモリを追加することをお勧めします。

エンコードの複雑さが高い場合 (モーションが高いためにフレームサイズが大きい場合)、または帯域幅が低い場合、すべてのストリームの完全なバッファに対応できるストレージサイズが適切であることを確認します。プロデューサーがメモリプレッシャーに達すると、ストレージオーバーフロープレッシャーコールバック () が発生しますStorageOverflowPressureFunc。ただし、コンテンツストアに使用可能なメモリがない場合は、Kinesis Video Streams 内に挿入されるフレームが破棄され、エラー (STATUS_STORE_OUT_OF_MEMORY = 0x5200002e) になります。詳細については、「クライアントライブラリから返されるエラーコードとステータスコード」を参照してください。これは、アプリケーションの確認応答 (ACKs) が利用できない場合や、永続化 がACKs遅れた場合にも発生する可能性があります。この場合、バッファは前のフレームがドロップアウトを開始する前に「バッファ期間」の容量までいっぱいになります。

メンバーフィールド

  • version – 正しいバージョンの構造が現在のバージョンのコードベースで使用されることを確認するために使用される整数値。

  • storageTypeDEVICE_STORAGE_TYPE ストレージの基盤となるバッキングと実装を指定する列挙。現在、サポートされている値は DEVICE_STORAGE_TYPE_IN_MEM のみです。将来の実装では DEVICE_STORAGE_TYPE_HYBRID_FILE がサポートされます。これは、ファイルに格納されたコンテンツストアにストレージがフォールバックすることを示します。

  • storageSize - 事前割り当てするストレージサイズ。最小の割り当ては 10 MB です。最大の割り当ては 10 GB です。(今後ファイルに格納されるコンテンツストアの実装に伴って変更される予定です。)

  • spillRatio – セカンダリオーバーフローストレージ (ファイルストレージ) ではなく、直接メモリストレージタイプ (RAM) から割り当てられるストレージの割合を表す整数値。現在使用されていません。

  • rootDirectory: file-backed コンテンツストアがあるディレクトリへのパス。現在使用されていません。