

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

# 使用 C 生產者程式庫
<a name="producer-sdk-c-api"></a>

您可以使用 Amazon Kinesis Video Streams 提供的 C 生產者程式庫撰寫應用程式程式碼，將媒體資料從裝置傳送至 Kinesis 影片串流。

## 物件模型
<a name="producer-sdk-c-objectmodel"></a>

Kinesis Video Streams C 生產者程式庫是以稱為 Platform Independent Codebase (PIC) 的常見元件為基礎，可在 GitHub 上取得，網址為 https：//[https://github.com/awslabs/amazon-kinesis-video-streams-pic/](https://github.com/awslabs/amazon-kinesis-video-streams-pic/)。PIC 包含基礎元件的平台獨立商業邏輯。Kinesis Video Streams C 生產者程式庫使用額外的 API 層包裝 PIC，允許案例和平台特定的回呼和事件。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 Frame 結構中的影格中繼資料封裝，再將其提交至底層 PIC API。對於非多軌案例，此元件是 PIC putFrame API 的傳遞。

C 程式庫提供以下物件，管理將資料傳送到 Kinesis 影片串流的作業：
+ **KinesisVideoClient** – 包含您的裝置相關資訊，並維護要報告 Kinesis Video Streams 事件的回呼。
+ **KinesisVideoStream** – 代表視訊串流參數的相關資訊，例如名稱、資料保留期和媒體內容類型。

## 將媒體放入串流
<a name="producer-sdk-c-putframe"></a>

您可以使用 C 程式庫提供的方法 （例如 `PutKinesisVideoFrame`) 將資料放入`KinesisVideoStream`物件。然後程式庫會管理資料的內部狀態，包括以下任務：
+ 執行身分驗證。
+ 查看網路延遲。如果延遲太高，程式庫可能選擇減少影格數。
+ 追蹤進行中串流的狀態。

## 程序：使用 C 生產者 SDK
<a name="producer-sdk-c-using"></a>

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

此程序包含以下步驟：
+ [下載 C 生產者程式庫程式碼](producersdk-c-download.md)
+ [撰寫並檢查程式碼](producersdk-c-write.md)
+ [執行並驗證程式碼](producersdk-c-test.md)