Raspberry Pi のカメラモジュール用デバイスドライバが標準でカーネルイメージに同梱されるようになった。そこで、Raspberry Piによる赤外線ネットワークカメラのソフトウェアを再構築した。
OS | 2015-01-31-raspbian |
デバイスドライバ | bcm2835-v4l2 |
ストリーム配信アプリ | mjpg_streamer |
まず、カメラモジュール用のデバイスドライバがインストールされていることを確認する。
$ v4l2-ctl --list-devices
mmal service 16.1 (platform:bcm2835-v4l2):
/dev/video0
ブート時にデバイスドライバーをロードするよう、/etc/modules に次の1行を追加する。
bcm2835-v4l2
カメラモジュールのLEDが点灯しないよう、/boot/config.txt に次の1行を追加する。
disable_camera_led=1
再起動して、カメラモジュール用デバイスドライバがロードされていることを確認する。
$ sudo reboot
$ lsmod
Module Size Used by
bcm2835_v4l2 40308 0
videobuf2_vmalloc 3360 1 bcm2835_v4l2
videobuf2_memops 2361 1 videobuf2_vmalloc
videobuf2_core 41981 1 bcm2835_v4l2
v4l2_common 8285 2 bcm2835_v4l2,videobuf2_core
videodev 154352 3 bcm2835_v4l2,v4l2_common,videobuf2_core
media 16088 1 videodev
snd_bcm2835 21342 0
snd_pcm 93100 1 snd_bcm2835
snd_seq 61097 0
snd_seq_device 7209 1 snd_seq
snd_timer 23007 2 snd_pcm,snd_seq
snd 67211 5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
uio_pdrv_genirq 3666 0
uio 9897 1 uio_pdrv_genirq
動作確認を兼ねて、カメラがサポートするフォーマットを列挙する。
$ v4l2-ctl --list-formats
ioctl: 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 update
MJPEG-streamerのビルドに必要なパッケージをインストールする。
$ sudo apt-get install subversion
$ sudo apt-get install libjpeg-dev imagemagick
$ sudo apt-get install cmake
$ sudo apt-get install libv4l-dev
MJPEG-streamerのソースコードをダウンロードする
$ git clone https://github.com/jacksonliam/mjpg-streamer.git
MJPEG-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