[Amazon Kinesis Video Streams] DockerイメージのプロデューサーライブラリでRTSPサーバの動画を配信してみました。
1 はじめに
こんにちは、AIソリューション部の平内(SIN)です。
Amazon Kinesis Video Streamsへ映像を配信するためのプロデューサーライブラリは、JavaとC++のコードがAWSより提供されています。 これを使用した動画配信の要領は、既に、ここDevIOでも紹介されているとおりです。
プロデューサーライブラリでは、GStreamerのプラグインの形で、Kinesisにストリームを送信するシンクを提供していますが、配信には、ある意味このモジュールが必須と言えると思います。
作業としては、GitHubのコードをCloneしてスクリプトを実行するだけというものですが、予め依存関係のセットアップなどが必要で、ちょっと面倒だったりします。
今回は、この辺の作業が全部完了しているDockerイメージを使用して、動画を配信する要領を試して見ました。ちなみに、このDockerイメージもAWSで提供されいるものです。
最初に動作しているようすです。
MacでDockerを起動して、Kinesis Video Streamsに配信しています。 Dockerイメージからは、Macのカメラが見えなかったので、ネットワークカメラをRTSPプロトコルで使用しています。
2 Dockerコンテナでの配信
下記にDockerで利用する方法が紹介されています。そのまま、なぞっただけです。
例: Kinesis ビデオストリーム プロデューサー SDK GStreamer プラグイン - Docker コンテナで GStreamer エレメントを実行します。
(1) Dockerログイン
$ aws ecr get-login --no-include-email --region us-west-2 --registry-ids 546150905175 docker login -u AWS -p xxxxxxxx https://546150905175.dkr.ecr.us-west-2.amazonaws.com
$ docker login -u AWS -p xxxxxxxx https://546150905175.dkr.ecr.us-west-2.amazonaws.com WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
(2) イメージのダウンロード
$ sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest latest: Pulling from kinesis-video-producer-sdk-cpp-amazon-linux Digest: sha256:611a6ccb5f60dfdd60473db591eba9738b42b9e864acd3df570b7124d597f4d0 Status: Image is up to date for 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
イメージが追加されたことを確認しています。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux latest 36a8d19a8ca5 10 days ago 2.82GB
(3) Dockerイメージの実行
macOS で Docker イメージを実行します。
$ sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash bash-4.2#
(4) Dockerイメージの状態
ログインすると、プロデューサーライブラリのinstall-scriptスクリプトの実行が完了して、コンパイルなどが終わった状態となっています。
bash-4.2# pwd /opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build bash-4.2# ls -la ・・・略・・・・ drwxr-xr-x 28 root root 4096 Mar 15 01:08 downloads -rwxr-xr-x 1 root root 25047 Mar 15 00:54 install-script -rwxr-xr-x 1 root root 130664 Mar 15 01:08 kinesis_video_gstreamer_audio_video_sample_app -rwxr-xr-x 1 root root 122512 Mar 15 01:08 kinesis_video_gstreamer_sample_app ・・・略・・・・
GStreamer のプラグイン(シンク)として動作するkvssinkも既に出来上がっています。
# ls -la downloads/local/lib/ | grep kvssink -rwxr-xr-x 1 root root 195704 Mar 15 01:08 libgstkvssink.so
環境変数に必要なパスを設定することで利用可能になります。
$ export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH $ export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH $ export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH
(5) 配信
リージョンがデフォルトで、オレゴンになっているので、東京に変更します。
$ export AWS_DEFAULT_REGION=ap-northeast-1
kinesis_video_gstreamer_sample_appで配信します。(RTSPサーバが、192.168.0.105で動作しています)
$ AWS_ACCESS_KEY_ID=xxx AWS_SECRET_ACCESS_KEY=xxx ./kinesis_video_gstreamer_sample_app TestStream rtsp://192.168.0.105/
3 RTSPサーバ
簡単ですが、今回使用したRTSPサーバについてです。
iPhoneにインストールして使用できる、Live-Reporterを利用させて頂きました。
インストール・起動するだけで、簡単にRTSPサーバになって動画配信が可能です。
画面上にアドレスも表示されていますので、そのまま使用できます。
4 最後に
Kinesis Video Streamsの配信も、Dockerイメージを利用すると、 何もしなくても出来てしまう感じです。Raspai用のイメージも提供されていたので、次、試してみたいと思います。 Docker凄い。
5 参考リンク
例: Kinesis ビデオストリーム プロデューサー SDK GStreamer プラグイン
世界初の本格的iOSカメラサーバーアプリ「Live-Reporter」
弊社ではAmazon Connectのキャンペーンを行なっております。
また音声を中心とした各種ソリューションの開発支援も行なっております。