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

インサイトウォッチ

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

はじめに

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

配信を始める

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

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

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

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

1
2
$ 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"に指定します。

1
2
3
4
$ aws --region "us-west-2" kinesisvideo get-data-endpoint --stream-name "BLOG_TEST" --api-name "GET_MEDIA"
{
}

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

Name Type Require Description
StreamName String × 作成したストリーム名
StreamArn String × ストリームのARN(Amazon リソースネーム)
StartSelector Structure データ取得開始位置
outfile String ファイルの保存先

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

Name Type Require Description
StartSelectorType String "FRAGMENT_NUMBER"・"SERVER_TIMESTAMP"・"PRODUCER_TIMESTAMP"・"NOW"・"EARLIEST"・"CONTINUATION_TOKEN"下記から選択。
AfterFragmentNumber String × "FRAGMENT_NUMBER"を選択した場合に開始するフラグメントを指定します。
StartTimestamp String × "SERVER_TIMESTAMP"・"PRODUCER_TIMESTAMP"を選択した場合に開始タイムスタンプを指定します。
ContinuationToken String × 前回のリクエスト時に発行された ContinuationToken から取得を開始します。
1
2
3
4
$ 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 等へ連携することができると思います。

新メンバーズ