読者です 読者をやめる 読者になる 読者になる

日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

Anzu と Momo を使って Raspberry Pi 2 から映像を配信をしてみた

WebRTC RaspberryPi

Anzu と Momo

Anzu と Momo は時雨堂という会社から発表されたサービスで、この二つを組み合わせるとラズパイから映像配信が出来てしまうらしい。

と言うことでやってみた。2016 年 2 月 15 日までは無料ですし。

Raspberry Pi 2 の構成

  • OS: RASPBIAN JESSIE
  • Storage: microSDHC 32GB
  • Web カメラ: Logicool C920t
  • 電源: PLANEX USB充電器 ホワイト PL-WUCHG03-W (USB 2ポート、2A 供給)
  • LAN: ラズパイの有線 LAN
  • IPアドレス: 192.168.1.2

Amazon のリンク先が Web カメラは異なります。(既に終息品なので Web カメラは後継モデルへのリンク)

OS のインスコなどは端折ります。

IPアドレスは、環境に寄って異なると思います。以下の手順で 192.168.1.2 は自分のラズパイの IP アドレスに読み替えをお願いします。

Web カメラは普通に USB につなぐだけで認識する模様です。

映像配信をしても、電源は上記のアダプタで安定して動いてます(今のところ)

Momo の準備

Momo のダウンロード

Momo は、GitHub の shiguredo/momo-help からダウンロードできます。

github.com

今回は、 tar.gz 版をダウンロードしました。

Momo のインストール

セットアップは下記のページを参考にして行ってます。

momo-help/QUICK.rst at master · shiguredo/momo-help · GitHub

SSH でラズパイにログインします。

ssh pi@192.168.1.2

続いて、ラズパイ上で QUICK.rst に習ってコマンドを実行していきます。

$ sudo apt-get update
$ sudo apt-get install libnss3

Momo のアーカイブをダウンロード&展開して、起動してみます。

$ wget https://github.com/shiguredo/momo-help/releases/download/0.1.1/momo-gw_0.1.1_arm7.tar.gz
$ tar zxvf momo-gw_0.1.1_arm7.tar.gz
$ cd momo-0.1.1
$ ./momo-gw

これで Momo が起動しました。起動後に Web カメラの LED も付いて、カメラも扱えているようです。

オプション無しだと P2P モードで動いているらしく、ブラウザでアクセスすると動作確認ができます。

Momo の P2P 配信を確認する

P2P モードで起動すると、配信確認が行えるように簡単な Web サーバが起動しているようなので、Chrome or Firefoxhttp://192.168.1.2:8080/ にアクセスし、「Connect(GetOffer)」をクリックすると…。

f:id:monajiro:20151216115415j:plain

配信に使っているラズパイです!\(^o^)/

ChromeFirefox 以外のブラウザでは、Momo が使用している WebRTC の仕組みが実装されていないので、そこだけ注意が必要です。

ただ、P2P 配信だと、ルーターに穴を開けたり、色々と面倒なのが悩ましい…。そこで Anzu を使ってインターネット向けの配信を行います。

Momo の停止

配信しっぱなしになるので、停止はラズパイにログインしているターミナル上で、 Ctrl + C です。

Anzu の準備

サインアップ

WebRTC SFU as a Service Anzu

Anzu は上記の URL からログインを GitHub アカウントで行うようで、GitHub にログインしてあれば OAuth の画面に飛ばされるので、承認すれば Anzu にログインできます。特に面倒な入力もなくサインアップは完了。

最近、サインアップが楽なサービスが多くて良い。

配信用パラメータの取得

ログインするとダッシュボードが表示され、必要な情報は全部ここにあります。

Momo で Anzu を使った配信をするときに必要なのは次の 2 つのパラメータ。

  • チャネル ID
  • 配信用トークン

これを Momo の起動コマンドにオプションとして渡します。 (表示される 2 行のうち、片方で大丈夫)

Momo からの配信確認も、ダッシュボードから行えるので開いたままにしておきます。

Momo で Anzu 経由の配信を行う

Momo の起動

ラズパイに ssh でログインし、以下のコマンドを流します。

$ cd momo-0.1.1
$ ./momo-gw -C <チャネル ID> -A <配信用トークン>

Anzu ダッシュボードから配信の確認

Momo の起動時に指定したチャネル ID の行にある「Momo 配信確認」のボタンをクリック。(もちろん、Chrome / Firefox で)

f:id:monajiro:20151216115423j:plain

Anzu ダッシュボードからも見えた!!!\(^o^)/

Anzu を経由して映像を配信しているので、この配信確認の URL を渡してあげれば、他の誰かも見られるようです。

コマンド一発で配信開始できるので、ラズパイへの SSH の穴さえ開けてあげれば、外からも手軽にカメラが起動できるのが良いです(自宅監視カメラ?)

まとめ

ラズパイを使った映像配信は、ラズパイと対応カメラさえあれば、超簡単でした。 あれ、こんなに簡単なの?と拍子抜けするくらいなので、ラズパイ2 を買ったけど、何に使って良いか分からないと言う人はチャレンジしてみると面白いと思います。

本格配信するには、ラズパイ 2 で全モデルよりも性能が上がったとは言え CPU 利用率高め (250% 〜 300%)だとか、個人契約のインターネット回線はアップロードの転送量に制限があるだとか課題はありますが、ちょっとお試しするには十分な環境かなと思います。

余談

ラズパイの専用カメラモジュールも対応しているみたいで、そっちを使いたい方はいくつか追加でコマンドを流す必要があるようです。

Momo + Anzu での配信が目的の人は USB の Web カメラのほうが安いし他にも流用できるし良いかも。開発元で動作確認済みの Web カメラは以下にまとめられてました。

momo-help/USB_CAMERA.rst at master · shiguredo/momo-help · GitHub

このページに載っている機種は動く確率が高いので、動かないリスクを下げたい人はここから選ぶと良さそう。(動作保証は無いだろうけど)