IoT

ラズパイとカメラモジュールでIPカメラ

ラズパイとカメラモジュールv2で、H.264エンコードRTSPストリーミングのIPカメラとして動かしてみました。

デバイス

  • Raspberry Pi 3 Model B
  • Raspberry Pi Camera Module v2

OSイメージ

OSは、Raspbian Jessie Lite を使いました。

  • 2017-04-10-raspbian-jessie-lite

まずは更新をしておきます。

1
2
$ sudo apt-get update
$ sudo apt-get upgrade

カメラの有効化

raspi-config でカメラを有効にします。

1
$ sudo raspi-config

メニューの 5 Interfacing OptionsP1 Camera で Enable に設定した後 reboot します。

reboot後、 vcgencmd でカメラが検出されていることを確認します。

1
2
$ vcgencmd get_camera
supported=1 detected=1

検出されました。

次に、V4L2ドライバをロードします。

1
$ sudo modprobe bcm2835-v4l2

これでビデオデバイス /dev/video0 としてカメラが使えるようになりました。

このままでは再起動するたびにドライバをロードする必要があるので、boot時に自動的にロードするように /etc/modules に以下を追加しておきます。

1
bcm2835-v4l2

VLCインストール

RTSPストリーミングの方法には他にも LIVE555h264_v4l2_rtspserver などがありますが、これらはソースコードからビルドする必要があるようです。

今回はビルドの必要のない vlc を使ってみることにしました。

1
$ sudo apt-get install vlc

RTSPストリーム配信

raspivid でH.264ハードウェアエンコードをして、 cvlc でRTSPストリーム配信するまでを、以下のワンライナーで実行します。

1
$ raspivid -o - -t 0 -w 640 -h 480 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264

これでIPカメラとして動き始めました。

表示クライアント

表示クライアントとしてもVLCが使えます。

PCやスマホなどのVLCアプリで、「ネットワークストリーム」から以下のRTSPのアドレスを入力することでカメラ映像をみることが出来ます。

rtsp://raspberrypi.local:8554/

映像の遅延は3~4秒くらいでしたので、お手軽利用としては許容範囲といったところかと思います。