Amazon Kinesis Video Streams with WebRTC を使用して、RasPIで動画配信サーバを作ってみました。
1 はじめに
CX事業本部の平内(SIN)です。
AWS re:Invent 2019 では、Kinesis Video Streams での WebRTC サポートが発表されました。
[アップデート] Kinesis Video Streams が WebRTC をサポートする様になりました! #reinvent
Kinesis Video Streamsだと、どうしても数秒のタイムラグが避けられなかったのですが、WebRTCだと、ほぼリアルタイムだと言うことで期待絶大です。
今回は、上記の記事と同じ内容で恐縮ですが、Raspberry Piでマスターとなるサーバーを立ち上げてみて、どれぐらいの使用感かを試してみました。
実際に、動作している様子が以下です。表示されている時計の時刻をみると、この構成で1秒弱であることが分かります。
2 Raspberry PI
使用したRaspberry PIは、「3 Model B+」で、最新の、Raspbian(2019-09-26)を使用しました。
型番
1 2 | $ cat /proc/cpuinfo | grep Revision Revision : a020d3 <= RasPI3 Model B+ |
Linux OSのディストリとバージョン
1 2 3 4 5 6 | $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster |
カーネル
1 2 | $ uname -a Linux raspberrypi 4.19.75-v7+ #1270 SMP Tue Sep 24 18:45:11 BST 2019 armv7l GNU/Linux |
3 Kinesis Video Starems
WebRTC-Streamと言う名前で、シグナルチャンネルを作成しました。
詳細情報を確認すると、ARNは、WebRTC-Stream/1576555300930となっていました。
4 ユーザー作成
アクセスキーとシークレットで利用するためのユーザーを作成しました。
パーミッションについて、リソースを今回作成したチャンネルのみに絞っていますが、Actionは、とりあえず * となっています。事後、最小限のパーミッションを確認していきたいと思います。
1 2 3 4 5 6 7 8 9 10 | { "Version" : "2012-10-17" , "Statement" : [ { "Effect" : "Allow" , "Action" : "kinesisvideo:*" , "Resource" : "arn:aws:kinesisvideo:ap-northeast-1:XXXXXXXXXXXX:channel/WebRTC-Stream/1576555300930" } ] } |
5 amazon-kinesis-video-streams-webrtc-sdk-js
Raspberry PIでの作業は、下記に記載のあるとおりです。
https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-sdk-js.html
1 2 3 4 5 | pi ~$ cd amazon-kinesis-video-streams-webrtc-sdk-js pi ~$ npm install pi ~$ pi ~$ npm run develop |
途中、1件だけモジュール不足のエラーが出てたので、足しときました。
1 2 | Error: Cannot find module 'fork-ts-checker-webpack-plugin' fork-ts-checker-webpack-plugin |
1 | pi ~$ npm install fork-ts-checker-webpack-plugin |
6 起動
npm run developで、ローカルにWebサーバが立ち上がりますので、http://localhost:3001/でアクセスします。
アクセスキー、シークレット、チャンネル名を入力して、Start Masterをクリックすると、Masterとして起動します。
Kinesis Video Streamsのコンソールに戻って、メディア再生ビューワーで、配信されている動画を確認することができます。
7 最後に
Webカメラの配信用に、Kinesis Video Streamsのプロデューサーを Raspberry PI で動作させると、ちょっと重たくて辛い感じ経っだのですが、with WebRTCは、非常に軽快に動いています。
また、こちらのSDKは、C++だけでなく、JavaScriptなどでも提供されているので、より利用しやすいと個人的には思います。