

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

# 撰寫並檢查程式碼
<a name="producersdk-javaapi-writecode"></a>

在 [Java 生產者程式庫程序](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-javaapi.html)的本節中，您會撰寫並檢查您在上一節中下載的 Java 範例程式碼。

Java 測試應用程式 ([https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java/blob/master/src/main/demo/com/amazonaws/kinesisvideo/demoapp/DemoAppMain.java](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java/blob/master/src/main/demo/com/amazonaws/kinesisvideo/demoapp/DemoAppMain.java)) 顯示以下編碼模式：
+ 建立 `KinesisVideoClient` 的執行個體。
+ 建立 `MediaSource` 的執行個體。
+ 使用用戶端註冊 `MediaSource`。
+ 開始串流。啟動 ，`MediaSource`然後開始將資料傳送至用戶端。

下列各節將詳細說明。



## 建立 KinesisVideoClient 的執行個體
<a name="producersdk-javaapi-review-code-create-client"></a>

您呼叫 `createKinesisVideoClient` 操作建立 `KinesisVideoClient` 物件。

```
final KinesisVideoClient kinesisVideoClient = KinesisVideoJavaClientFactory
    .createKinesisVideoClient(
        Regions.US_WEST_2,
        AuthHelper.getSystemPropertiesCredentialsProvider());
```

如果要讓 `KinesisVideoClient` 進行網路呼叫，需要可驗證的登入資料。您會傳遞 `SystemPropertiesCredentialsProvider` 執行個體，其會針對登入資料檔案中的預設設定檔讀取 `AWSCredentials`：

```
[default]
aws_access_key_id = ABCDEFGHIJKLMOPQRSTU
aws_secret_access_key = AbCd1234EfGh5678IjKl9012MnOp3456QrSt7890
```





## 建立 MediaSource 執行個體
<a name="producersdk-javaapi-review-code-create-mediasource"></a>

若要將位元組傳送至 Kinesis 影片串流，您必須產生資料。Amazon Kinesis Video Streams 提供 `MediaSource`界面，代表資料來源。

例如，Kinesis Video Streams Java 程式庫提供 `MediaSource` 介面的`ImageFileMediaSource`實作。此類別只會從一系列媒體檔案讀取資料，而不是 Kinesis 影片串流，但您可以使用它來測試程式碼。

```
final MediaSource bytesMediaSource = createImageFileMediaSource();
```

## 向用戶端註冊 MediaSource
<a name="producersdk-javaapi-review-code-register-mediasource"></a>

註冊您使用 `KinesisVideoClient` 所建立的媒體來源，系統就會知道該用戶端 (並可將資料傳送到用戶端)。

```
kinesisVideoClient.registerMediaSource(mediaSource);
```



## 啟動媒體來源
<a name="producersdk-javaapi-review-code-start-mediasource"></a>

啟動媒體來源，使其可以開始產生資料並將其傳送至用戶端。

```
bytesMediaSource.start();
```

