□RaspberryPiというかRaspbianで動くWebCAM監視カメラ(ライブカメラ)
WebCAM好きなので、RaspberryPiというかRaspbianで動くWebCAM監視カメラ
というかライブカメラをいくつか試してみました。
基本的にRaspbianにUVC対応のWebCAMをUSBにぷすっと刺せば、たいていは
一発認識してくれるでしょう、こんな感じで。
> Mar 13 00:26:13 raspberrypi kernel: [11539.274116] usb 1-1.2: new high-speed USB device number 4 using dwc_otg
> Mar 13 00:26:13 raspberrypi kernel: [11539.464441] usb 1-1.2: New USB device found, idVendor=056e, idProduct=7002
> Mar 13 00:26:13 raspberrypi kernel: [11539.464473] usb 1-1.2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
> Mar 13 00:26:13 raspberrypi kernel: [11539.464490] usb 1-1.2: Product: USB2.0 PC Camera
> Mar 13 00:26:13 raspberrypi kernel: [11539.464505] usb 1-1.2: Manufacturer: Sonix Technology Co., Ltd.
> Mar 13 00:26:13 raspberrypi kernel: [11539.533959] Linux media interface: v0.10
> Mar 13 00:26:13 raspberrypi kernel: [11539.554342] Linux video capture interface: v2.00
> Mar 13 00:26:13 raspberrypi kernel: [11539.578225] uvcvideo: Found UVC 1.00 device USB2.0 PC Camera (056e:7002)
> Mar 13 00:26:13 raspberrypi kernel: [11539.586965] input: USB2.0 PC Camera as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input0
> Mar 13 00:26:13 raspberrypi kernel: [11539.588939] usbcore: registered new interface driver uvcvideo
> Mar 13 00:26:13 raspberrypi kernel: [11539.588969] USB Video Class driver (1.1.1)
で、あとはこの非力なRaspberryPiを、安価ながら最強の(笑)ライブカメラ
に仕立ててみましょう。
GUI上でやるとそれだけでCPUパワーを持って行かれるので、コマンドライン
CUIで遊べるものを探します。
raspbianをインストール&起動後に
apt-cache search webcam
とすると、
> fswebcam – Tiny and flexible webcam program
> gmotionlive – A simple multipart/x-mixed-replace viewer
> libdecodeqr-dev – A C/C++ library for decoding QR code
> libdecodeqr-examples – Sample program in C/C++ library for decoding QR code
> libdecodeqr0 – A C/C++ library for decoding QR code
> libmimic-dev – A video codec for Mimic V2.x content (development files)
> libmimic-doc – A video codec for Mimic V2.x content (documentation)
> libmimic0 – A video codec for Mimic V2.x content
> python-libmimic – A video codec for Mimic V2.x content (python bindings)
> libwebcam0-dbg – Debug Symbols for the Webcam Library
> libwebcam0-dev – The Webcam Library
> libwebcam0 – The Webcam Library
> uvcdynctrl-data – Command line tool to control v4l2 devices
> uvcdynctrl-dbg – Debug Symbols for uvcdynctrl
> uvcdynctrl – Command line tool to control v4l2 devices
> minbif-common – IRC-to-other-IM-networks gateway using Pidgin library (common files)
> minbif-dbg – IRC-to-other-IM-networks gateway using Pidgin library (dbg)
> minbif-webcam – IRC-to-other-IM-networks gateway using Pidgin library (webcam)
> minbif – IRC-to-other-IM-networks gateway using Pidgin library
> pymissile – Control Marks and Spencer USB Missile Launcher
> qc-usb-source – source for the QuickCam Express driver
> qc-usb-utils – utility programs for the QuickCam Express driver
> uvccapture – USB UVC Video Class snapshot software
> webcamd – Capture images from video devices
> webcam – image grabber and uploader
> zbar-tools – bar code scanner and decoder (utilities)
> camstream – webcams および他のビデオデバイス用ツール集
> feh – imlib2 ベースの画像ビューア
と、いろいろ出てくるので、この中でCUIでも動かせるものをいくつか試す。
まぁすでに
『□VineでWEBCAM~時代は変わったな~』
http://linux.yebisu.jp/memo/389
でfswebcamとかffmpegあたりは試しているのですが、改めて。:-)
あ、RasPiに日本語フォントを入れてなかったら入れましょう。
apt-get -y install fonts-vlgothic fonts-ipafont fonts-ipaexfont
…これだと標準でIPAexFontになります。
・fswebcam
http://www21.atwiki.jp/snagplaces/pages/46.html
http://www.smiyasaka.com/fswebcam.html
apt-get -y install fswebcam
インストールできたら早速キャプチャしてみる。
fswebcam -d /dev/video0 \ -p YUYV -D 2 -S 16 -r 640x480 \ --jpeg 75 --line-colour '#FF000000' \ --text-colour '#40FFFFFF' --banner-colour '#FF000000' \ --title "漢字も打てますよ" \ --font "/usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf:12" \ /var/tmp/output.jpg
以前はEUCでないとNGでしたが、UTF-8のままでも漢字でました。
・ffmpeg
http://linux.yebisu.jp/memo/389
これは面倒なので省略。motionをapt-getで入れるとffmpegも入ります。:-)
・webcam
http://www2s.biglobe.ne.jp/~sasihara/science/webcam.html
apt-get -y install webcam
インストールできたら設定ファイルを書く。
cat > ~/.webcam
----------
[grab]
device = /dev/video0
text = webcam %Y-%m-%d %H:%M:%S
infofile = filename
fg_red = 255
fg_green = 255
fg_blue = 255
width = 640
height = 480
delay = 10
wait = 2
#input = composite1
#norm = pal
#rotate = 0
top = 0
left = 0
bottom = -1
right = -1
quality = 75
trigger = 0
once = 1
#archive = /PATH_TO/live_%Y%m%d%H%M%S.jpg
archive = /var/tmp/output.jpg
----------
として、
webcam ~/.webcam
とすればOK。漢字は打てない。
・uvccapture
http://tomono.eleho.net/2012/10/06/3308/
http://www2.denshi.numazu-ct.ac.jp/mirsdoc2/mirsmg3d/osin/num0005a/0005.html
http://www2.denshi.numazu-ct.ac.jp/mirsdoc2/mirsmg3d/osin/num0006a/0006.html
apt-get -y install uvccapture
インストールできたら早速キャプチャしてみる。
> -v Verbose
> -o<filename> Output filename(default: snap.jpg)
> -d<device> V4L2 Device(default: /dev/video0)
> -x<width> Image Width(must be supported by device)(>960 activates YUYV capture)
> -y<height> Image Height(must be supported by device)(>720 activates YUYV capture)
> -c<command> Command to run after each image capture(executed as <command> <output_filename>)
> -t<integer> Take continuous shots with <integer> seconds between them (0 for single shot)
> -q<percentage> JPEG Quality Compression Level (activates YUYV capture)
> -r Use read instead of mmap for image capture
> -w Wait for capture command to finish before starting next capture
> -m Toggles capture mode to YUYV capture
> Camera Settings:
> -B<integer> Brightness
> -C<integer> Contrast
> -S<integer> Saturation
> -G<integer> Gain
uvccapture -v \ -o/var/tmp/output.jpg \ -d/dev/video0 \ -x640 \ -y480 \ -q75 \ -m
・motion
http://www.bird-soft.net/mt/2009/06/linuxwebmotion.html
apt-get -y install motion
/etc/motion/motion.conf が設定ファイル…PostgreSQLはじめ、
DBともなにか連携できるらしい。
とはいえ、設定を変更するのはとりあえずは以下のパラメーター
くらいかな?
emacs /etc/motion/motion.conf
----------
# Start in daemon (background) mode and release terminal (default: off)
###daemon off
daemon on
# File to store the process ID, also called pid file. (default: not defined)
###process_id_file /var/run/motion/motion.pid
process_id_file /var/run/motion.pid
# V4L2_PIX_FMT_SN9C10X : 0 ‘S910’
# V4L2_PIX_FMT_SBGGR8 : 1 ‘BA81’
# V4L2_PIX_FMT_MJPEG : 2 ‘MJPEG’
# V4L2_PIX_FMT_JPEG : 3 ‘JPEG’
# V4L2_PIX_FMT_RGB24 : 4 ‘RGB3’
# V4L2_PIX_FMT_UYVY : 5 ‘UYVY’
# V4L2_PIX_FMT_YUYV : 6 ‘YUYV’
# V4L2_PIX_FMT_YUV422P : 7 ‘422P’
# V4L2_PIX_FMT_YUV420 : 8 ‘YU12’
###v4l2_palette 8
v4l2_palette 6
# Image width (pixels). Valid range: Camera dependent, default: 352
###width 320
width 640
# Image height (pixels). Valid range: Camera dependent, default: 288
###height 240
height 480
# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
###framerate 2
framerate 5
# Output ‘normal’ pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# When set to ‘first’, only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to ‘best’.
# Picture with motion nearest center of picture is saved when set to ‘center’.
# Can be used as preview shot for the corresponding movie.
###output_normal on
output_normal off
# Use ffmpeg to encode mpeg movies in realtime (default: off)
###ffmpeg_cap_new on
ffmpeg_cap_new off
# Locate and draw a box around the moving object.
# Valid values: on, off and preview (default: off)
# Set to ‘preview’ will only draw a box in preview_shot pictures.
###locate off
locate on
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
###target_dir /tmp/motion
target_dir /var/tmp/motion
# The mini-http server listens to this port for requests (default: 0 = disabled)
###webcam_port 8081
webcam_port 8088
# Restrict webcam connections to localhost only (default: on)
###webcam_localhost on
webcam_localhost off
# TCP/IP port for the http server to listen on (default: 0 = disabled)
###control_port 8080
control_port 8089
# Restrict control connections to localhost only (default: on)
###control_localhost on
control_localhost off
----------
あとは実際に起動。
ちなみにdaemon offの状態で起動してみると、
motion /etc/motion/motion.conf
> # motion /etc/motion/motion.conf
> [0] Processing thread 0 – config file /etc/motion/motion.conf
> [0] Motion 3.2.12 Started
> [0] ffmpeg LIBAVCODEC_BUILD 3482368 LIBAVFORMAT_BUILD 3478784
> [0] Thread 1 is from /etc/motion/motion.conf
> [0] motion-httpd/3.2.12 running, accepting connections
> [0] motion-httpd: waiting for data on port TCP 8089
> [1] Thread 1 started
> [1] cap.driver: “uvcvideo”
> [1] cap.card: “USB2.0 PC Camera”
> [1] cap.bus_info: “usb-bcm2708_usb-1.2”
> [1] cap.capabilities=0x04000001
> [1] – VIDEO_CAPTURE
> [1] – STREAMING
> [1] Test palette YUYV (640×480)
> [1] Using palette YUYV (640×480) bytesperlines 1280 sizeimage 614400 colorspace 00000008
> [1] found control 0x00980900, “Brightness”, range -64,127
> [1] “Brightness”, default -8193, current 0
> [1] found control 0x00980901, “Contrast”, range 0,95
> [1] “Contrast”, default 57343, current 0
> [1] found control 0x00980902, “Saturation”, range 0,150
> [1] “Saturation”, default 57343, current 135
> [1] found control 0x00980903, “Hue”, range -40,40
> [1] “Hue”, default -8193, current 0
> [1] found control 0x00980910, “Gamma”, range 1,100
> [1] “Gamma”, default 57343, current 1
> [1] mmap information:
> [1] frames=4
> [1] 0 length=614400
> [1] 1 length=614400
> [1] 2 length=614400
> [1] 3 length=614400
> [1] Using V4L2
> [1] Resizing pre_capture buffer to 1 items
> [1] Started stream webcam server in port 8088
こんな感じで起動するので、
http://raspberrypiのIPアドレス:8080/
のようにしてアクセス…だけど、IE8までは表示できないかも。
daemon inだと、
> # motion /etc/motion/motion.conf
> [0] Processing thread 0 – config file /etc/motion/motion.conf
> [0] Motion 3.2.12 Started
> [0] Motion going to daemon mode
としか出ない。:-)
・MJPG-streamer
http://armadillo.atmark-techno.com/howto/webcam-streaming
http://cozyattic.wordpress.com/2009/10/19/mjpg-streamer%E3%81%A7%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E9%85%8D%E4%BF%A1/
apt-get -y install subversion libjpeg8-dev imagemagick
cd /usr/src/ svn checkout https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer cd mjpg-streamer/mjpg-streamer make
できたら、
cp ./*.so /usr/lib/ cp ./mjpg_streamer /usr/bin/ mv ./www /var/
そしたら、あとは以下のようにして起動すればOK!?
mjpg_streamer \ --input "input_uvc.so --device /dev/video0 --fps 5 --resolution 640x480 --yuv --quality 75" \ --output "output_http.so --port 8088 --www /var/www --credentials user:password"
とすることで、YUYVモードで動かす。
(–yuvをとっても動くUVCカメラならはずしていいけど)
すると、
> MJPG Streamer Version: svn rev: 3:172
> i: Using V4L2 device.: /dev/video0
> i: Desired Resolution: 640 x 480
> i: Frames Per Second.: 5
> i: Format…………: YUV
> i: JPEG Quality……: 75
> Adding control for Pan (relative)
> UVCIOC_CTRL_ADD – Error: Inappropriate ioctl for device
> Adding control for Tilt (relative)
> UVCIOC_CTRL_ADD – Error: Inappropriate ioctl for device
> Adding control for Pan Reset
> UVCIOC_CTRL_ADD – Error: Inappropriate ioctl for device
> Adding control for Tilt Reset
> UVCIOC_CTRL_ADD – Error: Inappropriate ioctl for device
> Adding control for Pan/tilt Reset
> UVCIOC_CTRL_ADD – Error: Inappropriate ioctl for device
> Adding control for Focus (absolute)
> UVCIOC_CTRL_ADD – Error: Inappropriate ioctl for device
> mapping control for Pan (relative)
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Tilt (relative)
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Pan Reset
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Tilt Reset
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Pan/tilt Reset
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Focus (absolute)
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for LED1 Mode
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for LED1 Frequency
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Disable video processing
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> mapping control for Raw bits per pixel
> UVCIOC_CTRL_MAP – Error: Inappropriate ioctl for device
> o: www-folder-path…: /var/www/
> o: HTTP TCP port…..: 8088
> o: username:password.: user:password
> o: commands……….: enabled
こんな感じできどうするので、あとは
http://raspberrypiのIPアドレス:8080/
のようにしてアクセス!!
Pingback: 【linux】ラズパイをサーバとして色々テストと覚書(゚∀゚) | 鍋風呂