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

この記事では、 Kinesis Video Stream を使って配信しているデータを AWS CLI で取得します。
2018.06.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、中村です。
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 等へ連携することができると思います。