ラズパイを使用してWEBカメラで動画ストリーミングをやってみる
WebIOPi を使って、ブラウザから CAM PROGRAM ROBOT を制御する所まではできました。
次は、ブラウザ上にカメラ映像を表示して、カメラを見ながらリモコンを動かせるようにしたいです。
そこで、まずは、「ブラウザ上にカメラからの映像を表示する」をやってみたいと思います。
その方法は色々あるようですが、最もメジャーな方法は、おそらく mjpg-streamer を使用するモノであると思われます。
そこで、mjpg-streamer を使える様にします。
Mjpg-streamer のインストール
手順は以下の通りです。
- 関連ファイルinstall
- mjpg-streamer のソースを取得
- make
- ディレクトリ移行
それぞれの処理を順に実行します。
関連ファイル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 を起動して、その動作を確認するまでを備忘録として残しました。
ディスカッション
コメント一覧
まだ、コメントがありません