Kinesis Video Streamからストリーミングデータを取得する

こんにちは、中村です。
Kinesis Video Stream で配信中の映像を AWS CLI で取得してみようと思います。

はじめに

今回はMacBook から Kinesis Video Stream に映像を配信します。 そのためにライブラリ等を準備する必要があります。こちらを参考にするといいと思います。

Amazon Kinesis Video Streamsを使ってストリーム映像をAWS上に流してみる【MacBook Pro】– ClassmethodサーバーレスAdvent Calendar 2017 #serverless #adventcalendar #reinvent

配信を始める

準備が終わったら、 AWS コンソールから Kinesis Video Stream で、ストリームを作成します。

AWS が用意しているライブラリは、オレゴン( us-west-2 )でのみ動作します。

今回は細かい設定をせずに、デフォルトにします。ストリーム名を決定すれば完了です。完了すると、ストリームの情報やデータ保持期間等が表示されます。

先ほど準備したライブラリ内の kinesis-video-native-build に移動し、下記のコマンドを入力します。

$ cd kinesis-video-native-build
$ AWS_ACCESS_KEY_ID="XXXXXXXX" AWS_SECRET_ACCESS_KEY="XXXXXXXXXXXXXXXX" ./kinesis_video_gstreamer_sample_app "BLOG_TEST"

正常な認証情報を使用し、ストリーミングが開始されるとデバッグログが流れます。

コンソールのプレビューでも確認ができました。

ストリーミングデータを取得する

ストリーミングが確認できたので、実際にデータを取得してみます。 まずは、ストリーム取得用のエンドポイントを取得します。データを取得するためのエンドポイントなので、APIName を "GET_MEDIA"に指定します。

    $ aws --region "us-west-2" kinesisvideo get-data-endpoint --stream-name "BLOG_TEST" --api-name "GET_MEDIA"
    {
        "DataEndpoint": "https://XXXXXXX.kinesisvideo.us-west-2.amazonaws.com"
    }

次に GetMedia でエンドポイントからストリーミングデータを取得します。 StreamName ・ StreamArn についてはどちらかパラメータとしてあれば大丈夫です。

リクエストパラメーター

StreamName
Type: String
作成したストリーム名
必須: ×

StreamArn
Type: String
ストリームのARN(Amazon リソースネーム)
必須: ×

StartSelector
Type: Structure
データ取得開始位置
必須: ◯

outfile
Type: String
ファイルの保存先
必須: ◯


StartSelector

StartSelectorは、データ取得開始位置を指定します。

StartSelectorType
Type: String
下記の6つのタイプから選択する

  • FRAGMENT_NUMBER
  • SERVER_TIMESTAMP
  • PRODUCER_TIMESTAMP
  • NOW
  • EARLIEST
  • CONTINUATION_TOKEN

必須: ◯

AfterFragmentNumber
Type: String
"FRAGMENT_NUMBER"を選択した場合に開始するフラグメントを指定します。
必須: ×

StartTimestamp
Type: String
"SERVER_TIMESTAMP"・"PRODUCER_TIMESTAMP"を選択した場合に開始タイムスタンプを指定します。
必須: ×

ContinuationToken
Type: String
前回のリクエスト時に発行された ContinuationToken から取得を開始します。
必須: ×

    $ aws --endpoint-url "https://XXXXXXX.kinesisvideo.us-west-2.amazonaws.com" --region "us-west-2"  kinesis-video-media get-media --stream-name "BLOG_TEST" --start-selector '{"StartSelectorType":"NOW"}' "/Users/nakamura.yuki/Desktop/blog-test.webm"
    {
        "ContentType": "video/webm"
    }

生成されたファイルを開いてみます。 ストリーミングしていたデータが表示できました。

まとめ

いかがでしたでしょうか。
このように配信映像を取得することができるので、 Rekognition Video 等へ連携することができると思います。