使用 C Producer Library - Amazon Kinesis Video Streams

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

使用 C Producer Library

您可以使用 Amazon Kinesis Video Streams 提供的 C 製作者程式庫撰寫應用程式程式碼,將媒體資料從裝置傳送到 Kinesis 視訊串流。

物件模型

Kinesis Video Streams C 產生器程式庫是以稱為平台獨立程式碼庫 (PIC) 的通用元件為基礎,網址為 https://github.com/awslabs/ amazon-kinesis-video-streams-pic/。 GitHub PIC 包含基礎組件的獨立於平台的業務邏輯。Kinesis Video Streams C 製作者程式庫會將 PIC 包裝成額外的 API 層,以允許案例和平台特定的回呼和事件。Kinesis Video Streams C 製作者程式庫具有建置在 PIC 之上的下列元件:

  • 裝置資訊提供者 — 公開可直接提供給 PIC API 的DeviceInfo結構。您可以設定一組提供者,包括應用程式案例最佳化的提供者,這些提供者可根據應用程式處理的串流數量和類型,以及根據可用 RAM 數量設定的必要緩衝數量,最佳化內容存放區。

  • 串流資訊提供者 — 公開可直接提供給 PIC API 的StreamInfo結構。有一組特定於應用程式類型和常見的串流案例類型的提供者。其中包括視頻,音頻以及音頻和視頻多軌等提供商。這些案例中的每一個都有預設值,您可以根據應用程式的需求自訂這些預設值。

  • 回呼提供者 — 公開可直接提供給 PIC API 的ClientCallbacks結構。這包括一組網路回呼提供者 (以 CURL 為基礎的 API 回呼)、授權 (AWS 憑證 API),以及在錯誤回呼時重試串流。回呼提供者 API 需要一些引數來設定,例如 AWS 區域 和授權資訊。這是透過使用 IoT 憑證或使用 AWS AccessKeyId SecretKey、或來完成 SessionToken。如果您的應用程式需要進一步處理特定回呼,才能實現一些應用程式特定邏輯,您可以使用自訂回呼來增強回呼提供者。

  • FrameOrderCoordinator— 幫助處理多軌場景的音頻和視頻同步。它具有默認行為,您可以自定義該行為以處理應用程序的特定邏輯。它還簡化了 PIC 幀結構中的幀元數據打包,然後將其提交到下層 PIC API。對於非多軌案例,此元件是 PIC putFrame API 的傳遞。

C 程式庫提供以下物件,管理將資料傳送到 Kinesis 影片串流的作業:

  • KinesisVideoClient— 包含有關您裝置的資訊並維護回呼,以報告 Kinesis Video Streams 事件。

  • KinesisVideoStream— 代表視訊串流參數的相關資訊,例如名稱、資料保留期和媒體內容類型。

將媒體放入串流

您可以使用 C 庫提供的方法(例如,PutKinesisVideoFrame)將數據放入對KinesisVideoStream象中。然後程式庫會管理資料的內部狀態,包括以下任務:

  • 執行身分驗證。

  • 查看網路延遲。如果延遲太高,程式庫可能選擇減少影格數。

  • 追蹤進行中串流的狀態。

程序:使用 C Producer 開發套件

此程序示範如何在 C 應用程式中使用 Kinesis Video Streams 用戶端和媒體來源,將 H.264 編碼的視訊影格傳送到 Kinesis 視訊串流。

此程序包含以下步驟:

必要條件

  • 認證 — 在範例程式碼中,您可以透過指定您在認證設定檔檔案中設定的設定檔來提供 AWS 認證。如果您尚未這麼做,請先設定您的登入資料設定檔。

    如需詳細資訊,請參閱設定 AWS 認證和開發區域

  • 憑證存放區整合 — Kinesis Video Streams 製作者程式庫必須與其呼叫的服務建立信任。這是透過驗證公用憑證存放區中的憑證授權單位 (CA) 來完成的。在以 Linux 為基礎的模型中,此存放位於 /etc/ssl/ 目錄。

    將下列位置的憑證下載到您的憑證存放區:

    https://www.amazontrust.com/repository/SFSRootCAG2.pem

  • 安裝下列適用於 macOS 的建構相依性:

  • 為 Ubuntu 安裝以下構建依賴項:

    • Git:sudo apt install git

    • CMake:sudo apt install cmake

    • G ++:sudo apt install g++

    • pkg-配置:sudo apt install pkg-config

    • OpenJDK:sudo apt install openjdk-8-jdk

    • 設定 JAVA_HOME 環境變數:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

下一步驟

步驟 1:下載 C 製作者程式庫程式碼