Never Stop Questioning

USBカメラによるストリーミング

最終更新:

t-style

- view
メンバー限定 登録/ログイン

概略

USBカメラの画像をmjpg-streamerを使ってストリーミングする。

参考にしたページ


ハードウェアと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とかいじった方がよいのかもしんないが。。)
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
記事メニュー
目安箱バナー