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" { "DataEndpoint": "https://XXXXXXX.kinesisvideo.us-west-2.amazonaws.com" } |
次に 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 等へ連携することができると思います。