ブログ

Armadillo-640:USBカメラの画像をmjpg-streamerを使って、ネットワーク経由でPCのWebブラウザで見る方法

at_kazutaka.bito
2018年5月14日 9時57分

Armadillo-640で、USBカメラの画像をmjpg-streamerを使って、ネットワーク経由でPCのWebブラウザで見る方法です。

1.USB Video Class(UVC)を有効にします。

ここでは、USB Video Class(UVC)対応のUSBカメラを使用します。
Armadillo-640:USB Video Class(UVC)を有効にする
を参考に、USB Video Class(UVC)を有効にしたカーネルイメージをArmadillo-640に書き込みます。

以降の手順は、Armadillo-640で行います。

2.必要なパッケージをインストールします。

Armadillo-640をインターネットに接続可能なネットワークに接続します。
apt-getコマンドでupdateとupgradeおよび必要なパッケージをインストールします。

root@armadillo:~# apt-get update & apt-get upgrade
root@armadillo:~# apt-get install build-essential
root@armadillo:~# apt-get install libjpeg-dev
root@armadillo:~# apt-get install imagemagick
root@armadillo:~# apt-get install subversion

補足)インストール中に"Do you want to continue? [Y/n]"と聞かれたら、"y"を入力します。

3.mjpg-streamerをインストールします。

svnコマンドでリポジトリからmjpg-streamerのソースをチェックアウトします。

root@armadillo:~# svn co http://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer

mjpg-streamerのソースをmakeしてインストールします。

root@armadillo:~# cd mjpg-streamer
root@armadillo:~/mjpg-streamer# make
root@armadillo:~/mjpg-streamer# make install

参考)make install実行時のログ

install --mode=755 mjpg_streamer /usr/local/bin
install --mode=644 input_uvc.so output_file.so output_udp.so output_http.so input_testpicture.so input_file.so /usr/local/lib/
install --mode=755 -d /usr/local/www
install --mode=644 -D www/* /usr/local/www

以上で、mjpg_streamerのインストールは終了です。

以下は、Armadillo-640にUSBカメラを接続して、デバイスファイルが"/dev/video0"の場合の実行例です。

実行例)下記のように実行します。

mjpg_streamer \
-i "/usr/local/lib/input_uvc.so --device /dev/video0 --yuv --resolution VGA --fps 30" \
-o "/usr/local/lib/output_http.so --www /usr/local/www"

mjpg_streamer実行後、PCのWebブラウザで、

http://[ArmadilloのIPアドレス]:8080

を指定すると、mjpg-streamerの画面が開くので、左帯のStreamを選択すると、動画として見えます。

備考)
mjpg_streamer実行時に、USBカメラで制御できない機能について、メッセージが出るようです。
今回の確認では、下記のようなメッセージが出ましたが、画像は見ることができました。

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