製作者 SDK 結構 - Amazon Kinesis Video Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

製作者 SDK 結構

本節包含可用來提供資料給 Kinesis Video Streams 製作者物件之結構的相關資訊。

DeviceInfo/DefaultDeviceInfoProvider

DeviceInfoDefaultDeviceInfoProvider物件控制 Kinesis Video Streams 製作者物件的行為。

成員欄位

  • version — 整數值,用來確定結構的正確版本與目前版本的程式碼基底搭配使用。目前版本指定使用 DEVICE_INFO_CURRENT_VERSION 巨集。

  • name — 裝置的人類可讀名稱。

  • 標記數/標籤 — 目前未使用。

  • streamCount — 設備可以處理的最大流數量。這將為最初指向串流物件的指標預先分配儲存空間,但實際串流物件會隨後建立。預設值為 16 的串流,但您可於檔案中更改 DefaultDeviceInfoProvider.cpp 此編號。

  • storageInfo:描述主要儲存空間組態的物件。如需詳細資訊,請參閱StorageInfo

StorageInfo

指定 Kinesis Video Streams 的主要儲存裝置組態。

預設實施根據低區段快速堆積實施,此實作針對串流式處理進行最佳化。它使用 MEMALLOC 分配器,可以在指定平台上覆蓋。一些平台具有虛擬記憶體分配,沒有物理頁分配的支援。由於使用了記憶體,虛擬頁由實體頁提供支援。在儲存利用率偏低時,這會導致整體系統上的低記憶體壓力。

預設儲存空間大小根據以下公式計算。DefragmentationFactor 應設定為 1.2 (20%)。

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

在以下範例中,裝置具有音訊和視訊串流。音訊串流每秒採樣 512 次,平均樣本 100 位元組。視訊串流每秒 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 — 整數值,用來確定結構的正確版本與目前版本的程式碼基底搭配使用。

  • storageType — 一種DEVICE_STORAGE_TYPE枚舉,用於指定存儲的基礎支持和實現。目前僅支援的值為 DEVICE_STORAGE_TYPE_IN_MEM。未來的實作中將支援 DEVICE_STORAGE_TYPE_HYBRID_FILE,表示儲存空間退回到檔案支援的內容儲存空間。

  • storageSize — 要預先配置的儲存區大小 (以位元組為單位)。最小配置為 10 MB,最大配置為 10 GB。(這會變更檔案支援內容的存放區的未來實作。)

  • spillRati o — 整數值,代表要從直接記憶體儲存類型 (RAM) 配置的儲存體百分比,而不是次要溢位儲存體 (檔案儲存)。目前未使用。

  • rootDirectory:檔案支援的內容儲存空間所在目錄的路徑位置。目前未使用。