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

メンバーフィールド

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

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

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

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

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