Armadillo-640:USBカメラの画像をmjpg-streamerを使って、ネットワーク経由でPCのWebブラウザで見る方法は、
USBカメラから、画像をYUV入力してMJPEGにエンコードしているため、CPUの負荷が高くなっています。
ここでは、MJPEG出力可能なUSBカメラから、画像をMJPEG入力する方法を確認してみました。
使用したMJPEG出力可能なUSBカメラ)
BSWHD06M
参考にしたサイト)
raspbian にて mjpg-streamer で mjpeg を使う
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
root@armadillo:~# apt-get install libv4l-dev
root@armadillo:~# apt-get install checkinstall
補足)インストール中に"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
4.mjpg-streamerを改造します。
root@armadillo:~# cd mjpg-streamer
root@armadillo:~/mjpg-streamer# vi scripts/make_deb.sh
で、make_deb.shをエディタで開いて
make DESTDIR=/usr install
の行を
make USE_LIBV4L2=true DESTDIR=/usr install
に変更します。
添付のパッチ
mjpg-input_20190618.patch
をmjpg-streamerディレクトリの下に置きます。
root@armadillo:~/mjpg-streamer# ls mjpg-input_20190618.patch
mjpg-input_20190618.patch
パッチを適用します。
root@armadillo:~/mjpg-streamer# patch -p1 < mjpg-input_20190618.patch
5.mjpg-streamerをmakeしてインストールします。
root@armadillo:~/mjpg-streamer# make
root@armadillo:~/mjpg-streamer# make install
以上で、mjpg_streamerのインストールは終了です。
以下は、Armadillo-640にUSBカメラを接続して、デバイスファイルが"/dev/video0"の場合の実行例です。
実行例)mjpg_streamerでMJPEG入力(※)するには、下記のように実行します。
※)--yuvオプションを付けない
mjpg_streamer \
-i "/usr/local/lib/input_uvc.so -d /dev/video0 -r 640x480 -f 10" \
-o "/usr/local/lib/output_http.so --www /usr/local/www"
参考)
上記の実行例のようにMJPEG入力した場合、CPUの使用率は2%程度でした。
なお、下記のようにYUV入力(※)した場合、CPUの使用率は60%程度になります。
※)--yuvオプションを付ける
mjpg_streamer \
-i "/usr/local/lib/input_uvc.so --yuv -d /dev/video0 -r 640x480 -f 10" \
-o "/usr/local/lib/output_http.so --www /usr/local/www"
補足)
CPUの使用率はtopコマンドで確認。