ラズパイを使用してWEBカメラで動画ストリーミングをやってみる

2020年3月17日

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

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

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

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

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

スポンサーリンク

Mjpg-streamer のインストール

手順は以下の通りです。

  1. 関連ファイルinstall
  2. mjpg-streamer のソースを取得
  3. make
  4. ディレクトリ移行

それぞれの処理を順に実行します。

関連ファイルinstall

IJG の 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) のトリガを処理しています …

mjpg-streamer のソースを取得

次のコマンドで、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.

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' か ら出ます

ディレクトリ移行

出来上がったモノを、/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

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

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

https://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

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

続きは、こちらの記事で・・・。

最後に

ラズパイを使用してWEBカメラで動画ストリーミングをやってみようと思い立ちました。

その方法は複数あるようですが、Mjpg-streamerで実施するのがメジャーなようです。

そのために、Mjpg-streamer のインストールする手順を示しました。

その後、Mjpg-streamer を起動して、その動作を確認するまでを備忘録として残しました。

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら

TIPS

Posted by 60爺