LoginSignup
27
17

More than 5 years have passed since last update.

SkyWay IoT SDK + ラズパイでカスタム遠隔監視カメラを作ってみる

Last updated at Posted at 2017-10-24

本記事は、SkyWay IoT SDKがv0.1.0にあがったのに伴い古いものになりました。続編記事、 "続・SkyWay IoT SDKでのカスタム遠隔監視カメラ" を参照ください。

これは何?

SkyWay IoT SDK 1 とラズパイを使って、カスタムメイドな遠隔監視カメラを作ってみる

構成

全体構成はざっくりこんな感じ

image.png

  • 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 から取得する。

image.png

Application SettingsAvailable 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 のままにする)

image.png

カメラ映像が見れる。あと、ラズパイのCPUや温度などのリアルタイムデータも表示される。

Janusだけ&ラズパイがNAT配下にあると、VPNでも貼らない限りインターネット経由でみれないが、このSDKを使うと可能なのが嬉しいところ。あと、CPU情報なんかも、DataChannelで取得するようになっていて All WebRTC な世界を満喫できる。


  1. ブラウザを使わずに Linux でヘッドレス動作する SkyWay の SDK(βバージョン)。WebRTCスタックとして Janus gatewayを利用している。 

  2. Janusでは、これを受信して、WebRTCに変換 => ブラウザに送信 

27
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
17