サンプルアプリケーションの実行 (Cloud9)

このステップでは、Amazon Kinesis Video Streams Producer SDK C++ のサンプルアプリケーションを実行し、動画をアップロードします。

ストリームの作成

  • Amazon Kinesis Video Streamsのコンソールを開きます
  • Step 1-1-b. で選択したリージョンと同じリージョンになっていることを確認します
  • 左側のメニューの ビデオストリーム をクリックした後、 ビデオストリームを作成 ボタンをクリックします
  • 以下の内容をフォームに入力し、 ビデオストリームを作成 ボタンをクリックします
    • ビデオストリーム名: kvs-workshop-stream
    • デフォルト設定 を選択

以上でストリームが作成されました。

再生用ビデオのダウンロード

  • Cloud9 ではカメラデバイスを接続して映像を取得することができないため、カメラ映像の代わりに予めダウンロードしたビデオ映像を再生します。
  • Cloud9 のターミナルで以下のコマンドを実行して、映像をダウンロードします。
cd
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4

上記でダウンロードしたサンプル映像の代わりに、ご自身で撮影した映像を利用することも可能です。 なお、Lab-2 で Amazon Rekognition Video を利用した映像の分析を行う場合には、映像が H.264 でエンコードされている必要がありますので、 ご自身の映像を利用する場合、映像のコーデックをご確認ください。

AWS 認証情報の取得

このステップは、ハンズオンを実施している AWS 環境によって手順が異なります。

A) AWS Event Engine で払い出されたアカウントを利用している場合

AWS が主催するイベントなどで AWS Event Engine で払い出されたアカウントを利用している場合は、こちらの手順を進めた後、 B) 自分の AWS アカウントを利用している場合、の手順をスキップしてください。

  • Event EngineTeam Dashboard > AWS Console から以下のような AWS の認証情報をコピーし、 Cloud9 のターミナル にペーストします
export AWS_DEFAULT_REGION=...
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

B) 自分の AWS アカウントを利用している場合

こちらの手順は Cloud9 のターミナルではなく、AWS CLI がセットアップされた操作用 PCのターミナルで実施します。

AWS CLIを利用して、動画をアップロードするための一時認証情報を取得します。

なお、AWS CLI のセットアップが済んでいない場合は以下の手順を実行する前に、操作用 PC で AWS CLI のインストールAWS CLI の設定 を実行してください。

操作用 PC のターミナルで以下のコマンドを実行します。

aws sts get-session-token

以下のような結果が得られるので、この値を Cloud9 の環境変数に設定していきます。

{
    "Credentials": {
        "AccessKeyId": "...",
        "SecretAccessKey": "...",
        "SessionToken": "...",
        "Expiration": "2020-01-01T00:00:01Z"
    }
}

続いて、 Cloud9 のターミナル を開いて、以下のコマンドを実行します。

export AWS_DEFAULT_REGION=今回利用するリージョン (ap-northeast-1, us-west-2 など)
export AWS_ACCESS_KEY_ID=上記の結果の AccessKeyId の値
export AWS_SECRET_ACCESS_KEY=上記の結果の SecretAccessKey の値
export AWS_SESSION_TOKEN=上記の結果の SessionToken の値

※ 本ハンズオンでは、手順を簡単にするため AWS CLI を利用して IAM ユーザに紐づく一時認証情報を取得しましたが、 実際のカメラデバイスでは毎回このような手順を行うことは現実的ではありません。 実ユースケースでは AWS IoT で管理されたクライアント証明書にポリシーを紐づけ、 AWS IoT の Credential Provider から一時認証情報を取得して利用する方法を用いることで、 デバイス毎の認証や認可をセキュアに行うことができます。

ビデオのストリームへのアップロード

Cloud9 のターミナルで以下のコマンドを実行して、環境変数を設定します。

export GST_PLUGIN_PATH=$HOME/amazon-kinesis-video-streams-producer-sdk-cpp/build
export LD_LIBRARY_PATH=$HOME/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib

続いて以下のコマンドを実行すると、先ほどダウンロードしたファイルの映像をアップロードします。

cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
while true; do ./kvs_gstreamer_file_uploader_sample kvs-workshop-stream ~/sample.mp4 $(date +%s) audio-video && sleep 10s; done

エラーが表示される場合は、先ほど環境変数に設定した AWS の認証情報や、ストリーム名 (kvs-workshop-stream) が正しいかを確認してみて下さい。

なお、この後の手順でもこのストリームを利用しますので、このコマンドは実行したままにしておくか、次のステップの実行時に再度立ち上げてください。

ビデオストリームの確認

  • Amazon Kinesis Video Streamsのコンソールを開きます
  • 左側のメニューの ビデオストリーム をクリック > ストリームの一覧から kvs-workshop-stream をクリックします
  • メディア再生 の部分をクリックして展開すると、先ほどダウンロードした映像が表示されていることを確認できます

メディア再生

以上で Amazon Kinesis Video Streams Producer SDK C++ による動画のアップロードと確認は完了です。 続いて、アップロードされた動画をMP4形式でダウンロードしてみましょう。