Raspberry pi 3B+で使ってて便利だと思ったのが「Mjpg-Streamer」「samba」「WebiOPi」の機能になります。
「Mjpeg-Streamer」→カメラ映像のストリーミング配信(WEB)
「samba」→ファイル共有プロトコル(SMB)
「WebiOPi」→ブラウザでGPIOを操作できる機能
これらは全て過去にインストールから設定までやった経験がありますが、Raspberry Pi 4Bでは同じようにいきませんでした。。
更新によるソフトウェア側の問題なのか、Raspberry pi4Bとの互換性の問題なのか、その辺りは不明ですが、過去とは異なる方法でインストールと設定が出来ましたのでここでまとめておこうかと思います。
今回は「Mjpg-Streamer」についてまとめます。
Mjpg-Streamer
インストール
まず、専用のライブラリをインストール。yで実行。
1 |
$sudo apt install libjpeg8-dev cmake |
次にソースファイルのダウンロード
1 |
$git clone https://github.com/jacksonliam/mjpg-streamer.git |
ソースの場所に移動してコンパイルとインストール
1 2 3 |
$cd mjpg-streamer/mjpg-streamer-experimental $make $sudo make install |
これでインストールが完了です。
MJPG-streamerの起動
mjpg-streamer/mjpg-streamer-experimental内のシェルスクリプトを起動させるとカメラのストリーミングが開始します。
コマンドは下記の通りです。
1 |
$bash start.sh |
なお、この中身に解像度やフレームレート、ポート番号やPASS設定などの記述があるので、好みに合わせて変更が可能です。
2度目以降の起動は、
1 2 |
$cd mjpg-streamer/mjpg-streamer-experimental $bash start.sh |
でOKです。
カメラ動画の視聴
カメラのストリーミングが開始すれば、あとはそこにアクセスするだけでカメラの画像が確認出来ます。つまり、ラズパイにWEBサーバーが立てられている事になります。
同じLAN環境下にあれば、スマホやPC等からラズベリーパイのサーバーにアクセスするができます。
たとえば、ラズベリーパイのアドレスが「192.168.1.10」とすれば、クライアント側は、webブラウザで「192.168.1.10:8080」と、アドレスの後にポート番号を入れてアクセスするだけです。
これでラズベリーパイのカメラモジュールが映し出している画像をリアルタイムで確認することが出来ます。
記事を読ませていただきました。
エラーが出まして、手詰まりです。コメントを頂ければ幸いです。
MJPG Streamer Version: git rev: 310b29f4a94c46652b20c4b7b6e5cf24e532af39
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: -1
i: Format…………: JPEG
i: TV-Norm………..: DEFAULT
libv4l2: error setting pixformat: Device or resource busy
Unable to set format: 1196444237 res: 640×480
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
jazzwalkerさまはじめまして、管理人です。
Device or resource busyとあるので、例えば他のサービス(motionなど)が起動している可能性はないでしょうか。
そうであれば、そちらのプロセスを一度停止すると改善するかもしれません。
ご回答ありがとうございます。
出来ました。活用させていただきます。
シンプルかつ分かりやすい記事をありがとうございました。
管理人さま
ラズパイの新OS:bullseyeでやってみたのですが、以下のようになりました。
pi@raspberrypi4B:~/mjpg-streamer/mjpg-streamer-experimental $ bash start.sh
MJPG Streamer Version: git rev: 310b29f4a94c46652b20c4b7b6e5cf24e532af39
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: -1
i: Format…………: JPEG
i: TV-Norm………..: DEFAULT
i: The specified resolution is unavailable, using: width 2028 height 1080 instead
i: Could not obtain the requested pixelformat: MJPG , driver gave us: pRCC
… will try to handle this by checking against supported formats.
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
うまく行きませんでした。
勝手言って済みませんが、これについてのコメントを頂けると有り難いのですが…。宜しくおねがいします。
jazzwalker様
お返事が遅れてしまい申し訳ありません。管理人です。
指定された解像度は使用できません。と書いているようですので、カメラは変えていない事を前提とすれば
アプリケーションがOSにマッチしていない可能性もありますので、一度パッケージの更新(インストール済みの物)をされてみてはいかがでしょうか。(って多分やってますよね。。)
カメラは変えていません。
update,upgradeした上で、
記事の通りにインストールをやり直してみたのですが、結果は同じでした。同じメッセージが出ています。
解像度の変更は試してみたでしょうか?
start.sh の中身をいじるということでしょうか? それは試しておりません。
ちょっと、私にはハードルが高いです。
申し訳ありませんが、jazzwalkerさんの詳細な状況が不明であることから、以下のありきたりな助言しかできません。
①mjpgパッケージをアンインストールし、再度インストールし直す。
②解像度の変更をやってみる。
②はハードルが高いのかもしれませんが、ググれば山ほどヒットいたします。
お力になれなくて申し訳ないですが、よろしくお願いいたします。
解像度の変更もやってみました。結果は駄目でした。
OS:bullseye ではまたやり方が違うのかも知れませんね。
お手数かけました。ご回答ありがとうございました。
jazzwalker様
管理人です。先日(2021/12/5)raspberrypi zero 2wをセットアップしていた所、jazzwalker様と同じような症状が発生いたしました。エラー内容は多少異なりますが、私の場合は「カメラが有効にならない」でした。
試行錯誤した結論、現行の最新ver bullseyeではmjpg streamerと互換性が無い、かつそれ以前にカメラが有効にならないといった致命的欠陥があるかのように思えます。(多分)
改善策としては、osをダウングレード(busterなど)するしか無いかと思われます。ちなみに私の場合はbusterにダウングレードで直りました(あたりまえか。。)
すでに解決しているかも知れませんが、一応記しておきます。※osダウングレードはラズパイイメージャーから簡単に出来ます。