Raspberry Pi のカメラモジュール用デバイスドライバが標準でカーネルイメージに同梱されるようになった。そこで、Raspberry Piによる赤外線ネットワークカメラのソフトウェアを再構築した。
| OS | 2015-01-31-raspbian |
| デバイスドライバ | bcm2835-v4l2 |
| ストリーム配信アプリ | mjpg_streamer |
まず、カメラモジュール用のデバイスドライバがインストールされていることを確認する。
$ v4l2-ctl --list-devicesmmal service 16.1 (platform:bcm2835-v4l2): /dev/video0ブート時にデバイスドライバーをロードするよう、/etc/modules に次の1行を追加する。
bcm2835-v4l2カメラモジュールのLEDが点灯しないよう、/boot/config.txt に次の1行を追加する。
disable_camera_led=1再起動して、カメラモジュール用デバイスドライバがロードされていることを確認する。
$ sudo reboot$ lsmodModule Size Used bybcm2835_v4l2 40308 0videobuf2_vmalloc 3360 1 bcm2835_v4l2videobuf2_memops 2361 1 videobuf2_vmallocvideobuf2_core 41981 1 bcm2835_v4l2v4l2_common 8285 2 bcm2835_v4l2,videobuf2_corevideodev 154352 3 bcm2835_v4l2,v4l2_common,videobuf2_coremedia 16088 1 videodevsnd_bcm2835 21342 0snd_pcm 93100 1 snd_bcm2835snd_seq 61097 0snd_seq_device 7209 1 snd_seqsnd_timer 23007 2 snd_pcm,snd_seqsnd 67211 5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_deviceuio_pdrv_genirq 3666 0uio 9897 1 uio_pdrv_genirq動作確認を兼ねて、カメラがサポートするフォーマットを列挙する。
$ v4l2-ctl --list-formatsioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'YU12' Name : 4:2:0, packed YUV Index : 1 Type : Video Capture Pixel Format: 'YUYV' Name : 4:2:2, packed, YUYV Index : 2 Type : Video Capture Pixel Format: 'RGB3' Name : RGB24 (LE) Index : 3 Type : Video Capture Pixel Format: 'JPEG' (compressed) Name : JPEG Index : 4 Type : Video Capture Pixel Format: 'H264' (compressed) Name : H264 Index : 5 Type : Video Capture Pixel Format: 'MJPG' (compressed) Name : MJPEG Index : 6 Type : Video Capture Pixel Format: 'YVYU' Name : 4:2:2, packed, YVYU Index : 7 Type : Video Capture Pixel Format: 'VYUY' Name : 4:2:2, packed, VYUY Index : 8 Type : Video Capture Pixel Format: 'UYVY' Name : 4:2:2, packed, UYVY Index : 9 Type : Video Capture Pixel Format: 'NV12' Name : 4:2:0, packed, NV12 Index : 10 Type : Video Capture Pixel Format: 'BGR3' Name : RGB24 (BE) Index : 11 Type : Video Capture Pixel Format: 'YV12' Name : 4:2:0, packed YVU Index : 12 Type : Video Capture Pixel Format: 'NV21' Name : 4:2:0, packed, NV21 Index : 13 Type : Video Capture Pixel Format: 'BGR4' Name : RGB32 (BE)パッケージを更新する。
$ sudo apt-get updateMJPEG-streamerのビルドに必要なパッケージをインストールする。
$ sudo apt-get install subversion$ sudo apt-get install libjpeg-dev imagemagick$ sudo apt-get install cmake$ sudo apt-get install libv4l-devMJPEG-streamerのソースコードをダウンロードする
$ git clone https://github.com/jacksonliam/mjpg-streamer.gitMJPEG-streamerをビルドする
$ cd mjpg-streamer/mjpg-streamer-experimental$ make USE_LIBV4L2=true clean all$ sudo make installビデオフォーマットを設定する。
$ v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=0$ sudo /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_raspicam.so -x 640 -y 480 -fps 30" -o "/usr/local/lib/output_http.so -w /usr/local/www -p 8080"VLCメディアプレイヤーで確認する
http://192.168.1.80:8080/?action=stream