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などでも提供されているので、より利用しやすいと個人的には思います。


参考:https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/kvswebrtc-how-it-works.html

PR満足度98%

コメントは受け付けていません。