Amazon Kinesis Video StreamがWebRTCをサポートしたので試してみました。
すでにiOS、Android、JavaScript,Cのクライアントライブラリとサンプルが提供されているので、今回はCのサンプルをRaspberry Piで試してみたいと思います。
使ったRaspberry Piは3 Model B。 RaspbianはStretch。
uname -a
の結果
Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux
準備
一旦色々新しくして
sudo apt-get update
sudo apt-get upgrade
sudo apt-get clean
sudo reboot
サンプルをビルド&実行するのに必要なライブラリのインストール
sudo apt-get install pkg-config cmake libcap2 libcap-dev libssl-dev
最低限のサンプルはこれでビルドできますが、gstreamerを使ったサンプルに必要なライブラリも入れます。
sudo apt-get install gstreamer1.0-tools libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-omx gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly
カメラからの動画を表示してみる(Raspberry Pi上で作業)
今回はUSBカメラを使っているので、実際にカメラから画像を取り出せているか確認してみます。
gst-launch-1.0 autovideosrc ! autovideosink
これで、ウィンドーが開いてカメラからの画像が見れればOK。
Kinesis Video Streamのサンプルをビルド
このリポジトリにセットアップ方法が書かれているので、そのとおりにビルド。
cd ~
git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git
mkdir -p amazon-kinesis-video-streams-webrtc-sdk-c/build; cd amazon-kinesis-video-streams-webrtc-sdk-c/build; cmake ..
make
これでいくつかのサンプルが使えるようになりました。
CMakeCache.txt cmake_install.cmake kvsWebrtcClientMasterGstSample libkvsWebrtcClient.so
CMakeFiles h264SampleFrames kvsWebrtcClientViewer libkvsWebrtcSignalingClient.so
Makefile kvsWebrtcClientMaster kvscproducer opusSampleFrames
サンプルの実行
kvsWebrtcClientMasterGstSample
が実際のサンプルプログラムですが、実行するにはAWSのクレデンシャルが必要なので、以下の環境変数を設定します。
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION(KVS使うregionに合わせる)
kvsWebrtcClientMasterGstSample
の引数は、1つ目がSignaling Channel
のChannel Name
で、存在しなければ新規で作成し、すでにあればそれを使います。2つ目がvideo-only
かaudio-video
のどちらかを指定。
./kvsWebrtcClientMasterGstSample pi-camera video-only
これで、Raspberry Pi側はMasterとしてビデオのみを送ります。
送られてきた映像を見るのに、JavaScriptのサンプルで用意されている物を使います。
こちらのサンプルもAWSのクレデンシャル情報が必要になるので、以下の情報を入力します。
- KVS EndpointのRegion(Raspberry Piと合わせる)
- Access Key ID
- Secret Access Key
- Signaling ChannelのChannel Name
こんな感じで、左側にMacのカメラから入ってきている映像が表示され、右側にRaspberry Piからの映像が表示されます。
Raspberry Piの負荷をみてみるとなかなか苦しそうですね。
まとめ
サンプルが用意されているので、簡単にRaspberry Pi上で試すことが出来ました。
免責
発言内容は個人的な意見であり、所属する企業を代表するものではありません。
掲載しているソースコードは、サンプルレベルの物ですので動作を保証するものではありません。
後編 Amazon Kinesis Video StreamsのWebRTCとAlexaを組み合わせてドアホンみたいのを作る に続く