

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 例: PutMedia API を使用して Kinesis Video Streams にデータを送信する
<a name="examples-putmedia"></a>

この例は、[PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html) API を使用して以下を行う方法を説明するものです。既にコンテナ形式 (MKV) のデータを送信する方法を示します。送信する前にデータをコンテナ形式にアセンブルする必要がある場合 (カメラビデオデータをフレームにアセンブルする場合など) は、「」を参照してください[Kinesis Video Streams へのアップロード](producer-sdk.md)。

**注記**  
`PutMedia` オペレーションは C\$1\$1 および Java SDKs でのみ使用できます。これは、接続、データフロー、確認の全二重管理によるものです。他の言語ではサポートされていません。

**Topics**
+ [コードをダウンロードして設定する](#examples-putmedia-download)
+ [コードを記述して調べる](#examples-putmedia-write)
+ [コードを実行して検証する](#examples-putmedia-run)

## コードをダウンロードして設定する
<a name="examples-putmedia-download"></a>

手順に従って、Java サンプルコードをダウンロードし、プロジェクトを Java IDE にインポートし、ライブラリの場所を設定し、認証情報を使用する AWS ようにコードを設定します。

1. ディレクトリを作成し、GitHub リポジトリのソースコード例からクローンを作成します。`PutMedia` の例は、[Java](producer-sdk-javaapi.md) の一部です。

   ```
   git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
   ```

1. 使用している Java IDE ([Eclipse](https://www.eclipse.org/) や [IntelliJ IDEA](https://www.jetbrains.com/idea/) など) を開き、ダウンロードした Apache Maven プロジェクトをインポートします。
   + **Eclipse** では: [**ファイル**]、[**インポート**]、[**Maven**]、[**Existing Maven Projects** (既存の Maven プロジェクト)] を選択し、ダウンロードしたパッケージのルートに移動します。`pom.xml` ファイルを選択します。
   + **IntelliJ Idea では: **[**インポート**] を選択します。ダウンロードしたパッケージのルートに含まれる `pom.xml` ファイルに移動します。

    詳細については、関連する IDE ドキュメントを参照してください。

1. インポートしたライブラリのロケーションが IDE で見つかるようにするため、プロジェクトを更新します。
   + IntelliJ IDEA の場合は以下を実行します。

     1. プロジェクトの **lib** ディレクトリのコンテキスト (右クリック) メニューを開き、[**Add as library**] を選択します。

     1. **File** を選択し、**Project Structure** を選択します。

     1. [**Project Settings**] で [**Modules**] を選択します。

     1. [**Sources**] タブで **Language Level** を **7** 以上に設定します。
   + Eclipse の場合は以下を実行します。

     1. プロジェクトのコンテキスト (右クリック) メニューを開き、[**プロパティ**]、[**Java Build Path**]、[**ソース**] の順に選択します。次に、以下の操作を実行します。

        1. [**Source**] タブで、[**Native library location**] をダブルクリックします。

        1. [**Native Library Folder Configuration**] ウィザードで [**Workspace**] を選択します。

        1. [**Native Library Folder**] の選択肢からプロジェクトの **lib** ディレクトリを選択します。

     1. プロジェクトのコンテキスト (右クリック) メニューを開き、[**プロパティ**] を選択します。次に、以下の操作を実行します。

        1. [**Libraries**] タブで、[**Add Jars**] を選択します。

        1. [**JAR selection (JAR 選択)**] ウィザードで、プロジェクトの `lib` ディレクトリ内のすべての .jar を選択します。

## コードを記述して調べる
<a name="examples-putmedia-write"></a>

`PutMedia` API の例 () は、次のコーディングパターンを示しています。`PutMediaDemo`

**Topics**
+ [PutMediaClient を作成する](#producersdk-javaapi-writecode-putmediaapi-putmediaclient)
+ [メディアをストリーミングしてスレッドを一時停止する](#producersdk-javaapi-writecode-putmediaapi-run)

このセクションのコード例は、`PutMediaDemo` クラスのものです。

### PutMediaClient を作成する
<a name="producersdk-javaapi-writecode-putmediaapi-putmediaclient"></a>

`PutMediaClient` オブジェクトを作成するには、次のパラメータが必要です。
+ `PutMedia` エンドポイントの URI。
+ ストリーミングする MKV ファイルを指す `InputStream`。
+ ストリーム名。この例では、[Java プロデューサーライブラリを使用する](producer-sdk-javaapi.md) (`my-stream`) で作成されたものと同じストリームを使用します。別のストリームを使用するには、以下のパラメーターを変更します。

  ```
  private static final String STREAM_NAME="my-stream";
  ```
**注記**  
`PutMedia` API の例では、ストリームを作成しません。ストリームは、、Kinesis Video Streams コンソール[Java プロデューサーライブラリを使用する](producer-sdk-javaapi.md)、または のテストアプリケーションを使用して作成する必要があります AWS CLI。
+ 現在のタイムスタンプ。
+ タイムコードのタイプ。この例では `RELATIVE` が使用されます。これは、タイムスタンプがコンテナの開始を基準にしていることを示します。
+ 受信したパケットが承認済の送信者から送信されたことを確認する `AWSKinesisVideoV4Signer` オブジェクト。
+ 最大アップストリーム帯域幅 (Kbps)
+ パケットの送達確認を受け取る `AckConsumer` オブジェクト。

`PutMediaClient` オブジェクトは以下のコードを作成します。

```
/* actually URI to send PutMedia request */
final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API);

/* input stream for sample MKV file */
final InputStream inputStream = new FileInputStream(MKV_FILE_PATH);

/* use a latch for main thread to wait for response to complete */
final CountDownLatch latch = new CountDownLatch(1);

/* a consumer for PutMedia ACK events */
final AckConsumer ackConsumer = new AckConsumer(latch);

/* client configuration used for AWS SigV4 signer */
final ClientConfiguration configuration = getClientConfiguration(uri);

/* PutMedia client */
final PutMediaClient client = PutMediaClient.builder()
        .putMediaDestinationUri(uri)
        .mkvStream(inputStream)
        .streamName(STREAM_NAME)
        .timestamp(System.currentTimeMillis())
        .fragmentTimeCodeType("RELATIVE")
        .signWith(getKinesisVideoSigner(configuration))
        .upstreamKbps(MAX_BANDWIDTH_KBPS)
        .receiveAcks(ackConsumer)
        .build();
```

### メディアをストリーミングしてスレッドを一時停止する
<a name="producersdk-javaapi-writecode-putmediaapi-run"></a>

クライアントが作成されると、サンプルが `putMediaInBackground` との同時ストリーミングを開始します。`AckConsumer` が返されるまでメインスレッドは `latch.await` で一時停止し、この時点でクライアントは切断されます。

```
 /* start streaming video in a background thread */
            client.putMediaInBackground();

            /* wait for request/response to complete */
            latch.await();

            /* close the client */
            client.close();
```

## コードを実行して検証する
<a name="examples-putmedia-run"></a>

`PutMedia` API の例を実行するには、以下を実行します。

1. Kinesis Video Streams コンソールで、または AWS CLIを使用して `my-stream` という名前のストリームを作成します。

1. 作業ディレクトリを Java プロデューサー SDK ディレクトリに変更します。

   ```
   cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
   ```

1. Java SDK およびデモアプリケーションをコンパイルします。

   ```
   mvn package
   ```

1. `/tmp` ディレクトリに一時ファイル名を作成します。

   ```
   jar_files=$(mktemp)
   ```

1. ローカルリポジトリからファイルへの依存関係のクラスパス文字列を作成します。

   ```
   mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
   ```

1. `LD_LIBRARY_PATH` 環境変数の値を次のように設定します。

   ```
   export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH
   $ classpath_values=$(cat $jar_files)
   ```

1. 認証情報を指定 AWS して、次のようにコマンドラインからデモを実行します。

   ```
   java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain
   ```

1. [Kinesis Video Streams コンソール](https://console.aws.amazon.com//kinesisvideo/home/)を開き、ストリーム**の管理ページでストリーム**を選択します。動画が [**Video Preview**] ペインで再生されます。