概略
USBカメラの画像をmjpg-streamerを使ってストリーミングする。
参考にしたページ
- http://d.hatena.ne.jp/zfhrp7/20130227/1361936570
- http://chicklab.blog84.fc2.com/blog-entry-51.html
- http://shokai.org/blog/archives/6896
- http://www.e-risingstar.com/wordpress/?p=650
ハードウェアとOS
- PC: Raspberry Pi TypeB
- OS: Wheezy Raspbian
- USB HUB:ELECOM U2H-H4SBK
- WiFiドングル: ELECOM LAN-W300N/U2SWH)
- カメラ: HD Webcam C615(UVCに対応)
USBカメラの接続チェック
lsusbの確認
lsusbを打ってそれらしいデバイスが出ていなければまずNG。
ログの確認(ビデオデバイスのIDの確認)
接続直後に
sudo less /var/log/messages | grep video
あたりを打ってvideo0とか引っかかるとOK。
mjpg-streamerの準備
aptするもの
- subversion
- imagemagick
- libjpeg-dev (libjpeg8-dev)
svnするもの(mjpg-streamer)
svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
mjpg-streamerの構築
展開したディレクトリでmakeする。
(ほんとはmakeの対象CPUとかいじった方がよいのかもしんないが。。)
(ほんとはmakeの対象CPUとかいじった方がよいのかもしんないが。。)
cd mjpg-streamer/mjpg-streamer
make
videodev.hがないというエラーがでる。この場合は、シンボリックリンクを張る模様(今回は張ってからmakeしたので必要だったか不明)。
ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
mgpg-streamerの起動
sudo ./mjpg_streamer -i "./input_uvc.so -f 30 -r 180x120 -d /dev/video0 -y" -o "./outpu
t_http.so -w ./www -p 8080" &
変えそうな設定項目としては以下:
- {-f 30}がfps
- {-r 180x120}がサイズ
- {-d /dev/video0}がデバイス(/var/log/messageで確認したやつ)
- {-y}がエンコードに関する指定(-yだとYUYV, ないとMJPEG)
- {-p 8080}がサーバの待ち受けポート
ちなみに起動すると次のような出力がでる。
エラーとか書いてあって少しびっくりするがちゃんと動いている模様。
エラーとか書いてあって少しびっくりするがちゃんと動いている模様。
MJPG Streamer Version: svn rev: 3:172
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 180 x 120
i: Frames Per Second.: 30
i: Format............: YUV
i: JPEG Quality......: 80
i: The format asked unavailable, so the width 160 height 120
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...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled
mgpg-streamerの確認
http://(raspberry piのアドレス):8080/
にアクセスすると専用のページが出てくる。あと、
にアクセスすると専用のページが出てくる。あと、
<img src="http://(raspberry piのアドレス):8080/?action=stream">
を埋め込むことで自由なページが作成できる。
mgpg-streamerの終了
普通にkillする。sudoで起動しているのでsudoでpsしないと出てこないのに注意。
面倒なのですこし危険だけど以下をスクリプトにして対応。
面倒なのですこし危険だけど以下をスクリプトにして対応。
sudo pkill mjpg_streamer