Kinesis Video Streamからストリーミングデータを取得する
こんにちは、中村です。
Kinesis Video Stream で配信中の映像を AWS CLI で取得してみようと思います。
はじめに
今回はMacBook から Kinesis Video Stream に映像を配信します。 そのためにライブラリ等を準備する必要があります。こちらを参考にするといいと思います。
配信を始める
準備が終わったら、 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 等へ連携することができると思います。