#始めに
某所での発表の準備として用意させていただいた内容なのですが、私自身の参照の便も含めて誠に僭越ではございますがこちらに公開させていただきました次第です。すみませんがよろしくおねがいいたします
#内容
一万円以下で作れる、簡易監視カメラのソリューションです。2台の Raspberry Pi を用意し、一台にカメラモジュールを接続して撮影した映像をストリーミング配信、もう一台はテレビに接続して、受信したストリーミング映像をTVに映します。受信側 Raspberry Pi を例えば xbmc とかの media renderer にして、UPnP のPULL なり PUSH なり(要するに DLNA)で配信する方法もあると思いますが、映像だけでなく例えばセンサーのデータとかも映像の横とか表示することも可能にしておきたいので送受信両方を Raspbian で実装します
#完成図
下記はその様子で、右下の iPad で動かしているカンファレンスクロックの映像を 1台の Raspberry Pi で撮影して rtsp で 配信しています。それを、TV につないだもう一台の Raspberry Pi と、Mac の VLC で受信しています。MJPEG とかで配信するのとくらべるとちょっと遅延がおおきいですがフルハイビジョンはちょっと魅力です。配信中継の様子をこちらに動画で用意しました。
#実装
##配信側
raspivid で撮影した h.264 の映像を vlc で配信します
vlc がまだインストールされていないのであれば以下のようにインストールします
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install vlc
そして、以下のようにraspivid で撮影して配信します。尚、私の使い方ではカメラがひっくり返っているので -hf -vf で画像を反転させています
raspivid -o - -t 0 -hf -vf -w 1920 -h 1080 -fps 30 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
受信側
受信側は配信側の Raspberry Pi の IP アドレス(以下、例として 192.168.11.16 としています。ご自身の環境での IP アドレスに置き換えて実行してください)を指定して rtsp で omxplayer で受信して再生します
omxplayer -o local rtsp://192.168.11.16:8554/
#参考文献
こちらの記事を参考にさせて頂きました
また、Raspberry Pi でのストリーミング中継一般についてこちらの本の8章 “Chapter 8. Streaming Live HD Video” が大変詳しく、参考になりました。尚、Packet Pub の本ではいつもの事なのですがサンプルコードに typo が沢山あって緊張感がありました