本記事は、SkyWay IoT SDKがv0.1.0にあがったのに伴い古いものになりました。続編記事、 "続・SkyWay IoT SDKでのカスタム遠隔監視カメラ" を参照ください。
これは何?
SkyWay IoT SDK 1 とラズパイを使って、カスタムメイドな遠隔監視カメラを作ってみる
構成
全体構成はざっくりこんな感じ
- gstreamer
- USBカメラの映像からRTP/H.264の映像ストリームを生成する
- Janus-gateway
- RTP/H.264の映像ストリームなんかをWebRTCに変換して、ブラウザへ送信する
- SkyWay
- Janus-gatewayとブラウザ間のWebRTCのつなぎこみ(シグナリング)を行なう
- Browser
- 監視カメラのWebアプリを動かす
APIKEYの取得
まず、SkyWayのAPIKEYを https://console-webrtc-free.ecl.ntt.com/users/login から取得する。
Application Settings の Available Settings で、
- localhost
- nttcom.github.io
を登録する(Permissionsのチェックは全てはずしてOK)
SDK インストール
Raspbian jessieを推奨(stretchは、apt-getで入る gstreamer が現状イマイチなので)。Jessieのイメージはここからゲットできる。
以下のコマンドでインストールする
$ curl https://nttcom.github.io/skyway-iot-sdk/install_scripts/debian_based/installer.sh > installer.sh; sudo -E bash - installer.sh
#(最初にAPIKEYを聞かれるので、上の手順で取得したAPIKEYを入力する)
...
$ rm installer.sh; chown -R ${USER}:${USER} skyway-iot
各種プロセス起動
SDKのプロセスを起動する
- Janus (映像ストリームをWebRTCに変換)
$ /opt/janus/bin/janus
- SkyWay Signaling Gateway (JanusとSkyWayのつなぎこみ)
node skyway-signaling-gateway/app
- sample app(ラズパイ側のサンプルアプリ)
node skyway-siru-device/examples/metrics
gstreamerを起動する
USBカメラの映像からRTP/H.264ストリームを生成2
gst-launch-1.0 v4l2src device=/dev/video0 ! \
video/x-raw,width=640,height=480,framerate=30/1 ! \
videoscale ! videorate ! videoconvert ! timeoverlay ! \
omxh264enc target-bitrate=2000000 control-rate=variable ! \
h264parse ! rtph264pay config-interval=1 pt=96 ! \
udpsink host=127.0.0.1 port=5004
監視カメラのWebアプリで見てみる
https://nttcom.github.io/skyway-siru-sample/dist/
(最初にAPIKEYが聞かれるので、上述のAPIKEYを入力する。room nameはデフォルトの testroom
のままにする)
カメラ映像が見れる。あと、ラズパイのCPUや温度などのリアルタイムデータも表示される。
Janusだけ&ラズパイがNAT配下にあると、VPNでも貼らない限りインターネット経由でみれないが、このSDKを使うと可能なのが嬉しいところ。あと、CPU情報なんかも、DataChannelで取得するようになっていて All WebRTC な世界を満喫できる。
-
ブラウザを使わずに Linux でヘッドレス動作する SkyWay の SDK(βバージョン)。WebRTCスタックとして Janus gatewayを利用している。 ↩
-
Janusでは、これを受信して、WebRTCに変換 => ブラウザに送信 ↩