WEBカメラで動画ストリーミングをやってみる

WebIOPi を使って、ブラウザから CAM PROGRAM ROBOT を制御する所まではできました。

次は、ブラウザ上にカメラ映像を表示して、カメラを見ながらリモコンを動かせるようにしたいです。

そこで、まずは、「ブラウザ上にカメラからの映像を表示する」をやってみたいと思います。

その方法は色々あるようですが、最もメジャーな方法は、おそらく mjpg-streamer を使用するモノであると思われます。

そこで、mjpg-streamer を使える様にします。

1.Mjpg-streamer のインストール

手順は以下の通りです。

(1) 関連ファイルinstall

IJG の JPEG ライブラリの開発用ファイルをインストールします。
(Independent JPEG Group による JPEG ライブラリは、JPEG ファイル 処理用ライブラリだそうです)

pi@raspberrypi:/tmp $ sudo apt-get install libjpeg8-dev cmake
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了

libjsoncpp1:armhf (1.7.4-3) を設定しています …
cmake (3.7.2-1) を設定しています …
libc-bin (2.24-11+deb9u4) のトリガを処理しています …

(2) mjpg-streamer のソースを取得

pi@raspberrypi:/tmp $ git clone https://github.com/jacksonliam/mjpg-streamer.git
Cloning into 'mjpg-streamer'…
remote: Enumerating objects: 2902, done.
remote: Total 2902 (delta 0), reused 0 (delta 0), pack-reused 2902
Receiving objects: 100% (2902/2902), 3.46 MiB | 848.00 KiB/s, done.
Resolving deltas: 100% (1844/1844), done.

(3) make

ディレクトリ移動後、makeでコンパイルします。

pi@raspberrypi:/tmp $ cd mjpg-streamer/mjpg-streamer-experimental
pi@raspberrypi:/tmp/mjpg-streamer/mjpg-streamer-experimental $ make
[ -d _build ] || mkdir _build
[ -f _build/Makefile ] || (cd _build && cmake -DCMAKE_BUILD_TYPE=Release ..)
-- The C compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
[100%] Linking C shared library output_udp.so
make[3]: ディレクトリ '/tmp/mjpg-streamer/mjpg-streamer-experimental/_build' か ら出ます
[100%] Built target output_udp
make[2]: ディレクトリ '/tmp/mjpg-streamer/mjpg-streamer-experimental/_build' か ら出ます
make[1]: ディレクトリ '/tmp/mjpg-streamer/mjpg-streamer-experimental/_build' か ら出ます

(4) ディレクトリ移行

出来上がったモノを、/opt/mjpg-streamer に移行します。

pi@raspberrypi:/tmp/mjpg-streamer/mjpg-streamer-experimental $ cd /tmp
pi@raspberrypi:/tmp $ sudo mv mjpg-streamer/mjpg-streamer-experimental /opt/mjpg
-streamer

2.Mjpg-streamer の起動

それでは、mjpg-streamer を起動してみましょう。
/opt/mjpg-streamer に移動し、下記に示すコマンドを打ち込んでください。

なお、60爺の持っているカメラはラズパイ専用カメラではなくUSBカメラです。ですので、参考にしたコンテンツのコードをそのまま借用できませんでした。

pi@raspberrypi:~ $ cd /opt/mjpg-streamer
pi@raspberrypi:/opt/mjpg-streamer $ ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -r 1280x720 -f 10 -y -n" -o "./output_http.so -w ./www -p 8080"

すると、コンソールに以下のような表示が表れます。

MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 1280 x 720
i: Frames Per Second.: 10
i: Format…………: YUYV
i: JPEG Quality……: 80
i: TV-Norm………..: DEFAULT
i: FPS coerced ……: from 10 to 8
o: www-folder-path……: ./www/
o: HTTP TCP port……..: 8080
o: HTTP Listen Address..: (null)
o: username:password….: disabled
o: commands………….: enabled

そして、ブラウザから以下のようにアクセスすると以下の画像が表れます。
http://xxx.xxx.xxx.xxx:8080

そして、Stream をクリックするとカメラの画像が現れます。

スマホからもアクセスできました。

ただ、このコマンドを打つと、停止の際に、CTRL+C を実行せねばならず、ちょっと面倒です。

^Csetting signal to stop
i: cleaning up resources allocated by input thread
force cancellation of threads and cleanup resources
o: cleaning up resources allocated by server thread #00
done

このままでは、ロボットのリモコン画面にカメラ画像を載せるまでには至りません。続きは、こちらの記事で・・・。

※参考
ブラウザから操作できるライブ(監視)カメラを作る(Mjpg-streamer 編)!

USBカメラの最新記事8件