Raspberry Piによる赤外線ネットワークカメラ(2015年版)

Raspberry Pi のカメラモジュール用デバイスドライバが標準でカーネルイメージに同梱されるようになった。そこで、Raspberry Piによる赤外線ネットワークカメラのソフトウェアを再構築した。

OS2015-01-31-raspbian
デバイスドライバbcm2835-v4l2
ストリーム配信アプリmjpg_streamer

まず、カメラモジュール用のデバイスドライバがインストールされていることを確認する。

  1. $ v4l2-ctl --list-devices
  2. mmal service 16.1 (platform:bcm2835-v4l2):
  3. /dev/video0

ブート時にデバイスドライバーをロードするよう、/etc/modules に次の1行を追加する。

  1. bcm2835-v4l2

カメラモジュールのLEDが点灯しないよう、/boot/config.txt に次の1行を追加する。

  1. disable_camera_led=1

再起動して、カメラモジュール用デバイスドライバがロードされていることを確認する。

  1. $ sudo reboot
  2. $ lsmod
  3. Module Size Used by
  4. bcm2835_v4l2 40308 0
  5. videobuf2_vmalloc 3360 1 bcm2835_v4l2
  6. videobuf2_memops 2361 1 videobuf2_vmalloc
  7. videobuf2_core 41981 1 bcm2835_v4l2
  8. v4l2_common 8285 2 bcm2835_v4l2,videobuf2_core
  9. videodev 154352 3 bcm2835_v4l2,v4l2_common,videobuf2_core
  10. media 16088 1 videodev
  11. snd_bcm2835 21342 0
  12. snd_pcm 93100 1 snd_bcm2835
  13. snd_seq 61097 0
  14. snd_seq_device 7209 1 snd_seq
  15. snd_timer 23007 2 snd_pcm,snd_seq
  16. snd 67211 5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
  17. uio_pdrv_genirq 3666 0
  18. uio 9897 1 uio_pdrv_genirq

動作確認を兼ねて、カメラがサポートするフォーマットを列挙する。

  1. $ v4l2-ctl --list-formats
  2. ioctl: VIDIOC_ENUM_FMT
  3. Index : 0
  4. Type : Video Capture
  5. Pixel Format: 'YU12'
  6. Name : 4:2:0, packed YUV
  7. Index : 1
  8. Type : Video Capture
  9. Pixel Format: 'YUYV'
  10. Name : 4:2:2, packed, YUYV
  11. Index : 2
  12. Type : Video Capture
  13. Pixel Format: 'RGB3'
  14. Name : RGB24 (LE)
  15. Index : 3
  16. Type : Video Capture
  17. Pixel Format: 'JPEG' (compressed)
  18. Name : JPEG
  19. Index : 4
  20. Type : Video Capture
  21. Pixel Format: 'H264' (compressed)
  22. Name : H264
  23. Index : 5
  24. Type : Video Capture
  25. Pixel Format: 'MJPG' (compressed)
  26. Name : MJPEG
  27. Index : 6
  28. Type : Video Capture
  29. Pixel Format: 'YVYU'
  30. Name : 4:2:2, packed, YVYU
  31. Index : 7
  32. Type : Video Capture
  33. Pixel Format: 'VYUY'
  34. Name : 4:2:2, packed, VYUY
  35. Index : 8
  36. Type : Video Capture
  37. Pixel Format: 'UYVY'
  38. Name : 4:2:2, packed, UYVY
  39. Index : 9
  40. Type : Video Capture
  41. Pixel Format: 'NV12'
  42. Name : 4:2:0, packed, NV12
  43. Index : 10
  44. Type : Video Capture
  45. Pixel Format: 'BGR3'
  46. Name : RGB24 (BE)
  47. Index : 11
  48. Type : Video Capture
  49. Pixel Format: 'YV12'
  50. Name : 4:2:0, packed YVU
  51. Index : 12
  52. Type : Video Capture
  53. Pixel Format: 'NV21'
  54. Name : 4:2:0, packed, NV21
  55. Index : 13
  56. Type : Video Capture
  57. Pixel Format: 'BGR4'
  58. Name : RGB32 (BE)

パッケージを更新する。

  1. $ sudo apt-get update

MJPEG-streamerのビルドに必要なパッケージをインストールする。

  1. $ sudo apt-get install subversion
  2. $ sudo apt-get install libjpeg-dev imagemagick
  3. $ sudo apt-get install cmake
  4. $ sudo apt-get install libv4l-dev

MJPEG-streamerのソースコードをダウンロードする

  1. $ git clone https://github.com/jacksonliam/mjpg-streamer.git

MJPEG-streamerをビルドする

  1. $ cd mjpg-streamer/mjpg-streamer-experimental
  2. $ make USE_LIBV4L2=true clean all
  3. $ sudo make install

ビデオフォーマットを設定する。

  1. $ v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=0
MJPEG-streamerを起動する
  1. $ 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メディアプレイヤーで確認する

  1. http://192.168.1.80:8080/?action=stream
2015年02月19日