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

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

プロデューサー SDK 構造

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

DeviceInfo/DefaultDeviceInfoProvider

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

メンバーフィールド

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

  • 名前 — 人間が読めるデバイスの名前。

  • タグカウント/タグ — 現在使用されていません

  • 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) になります。詳細については、「クライアントライブラリから返されるエラーコードとステータスコード。」を参照してください。アプリケーションの確認 (ACK) が利用できない場合、または保持された ACK が遅延した場合にも発生する可能性があります。この場合、前のフレームがドロップアウトし始める前に、バッファーは「バッファー持続時間」の容量までいっぱいになります。

メンバーフィールド

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

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

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

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

  • rootDirectory: ファイルに格納されるコンテンツストアがあるディレクトリへのパス。現在使用されていません。