●RaspberryPi 4B bullseyeに mjpg-streamerを installする
2024.06.08
RaspberryPi OS Ver.11 (bullseye)に mjpg-streamerを installします。
bullseyeから camera commandが変わってしまったので、buster以前で使用していた
picameraや raspistill commandは使用できなくなりました。
jacksonliamさんの mjpg-streamerはまだ raspi専用 cameraの input_raspicam.soの supportを
しておりません。
input_raspicam.soが無い理由
【mjpg-streamerの issues Forumsでは Raspberry Pi OS Bullseye では「/opt/vc/include」内の
ディレクトリが「/usr/include」に移動されているためプラグイン「input_raspicam.so」は
buildされません】と書いてありました。
kanamaruさんの mjpg-streamerには input_raspicam.soが含まれていたのでこれを使用してみます。
neuralassembly/mjpg-streamer install
$ sudo apt install gcc g++
$ sudo apt install subversion cmake build-essential libjpeg8-dev imagemagick libv4l-dev
すでに libjpeg8-devはなくなっており libjpeg9-dev又は libjpeg62-turbo-devに変更するように
messageが出た。
libjpeg9-devでもうまくいかなかったので、私は libjpeg-dev (libjpeg62-turbo-devを含む)を
installした。
$ cd /home/pi
$ wget https://github.com/neuralassembly/mjpg-streamer/archive/refs/heads/master.zip
$ sudo unzip mjpg-streamer-master.zip
$ cd mjpg-streamer-master/mjpg-streamer-experimental
$ make
$ sudo make install
start.shの PATH修正
$ cd /home/pi/mjpg-streamer-master/mjpg-streamer-experimental
$ sudo nano start.sh
export LD_LIBRARY_PATH="/home/pi/mjpg-streamer-master/mjpg-streamer-experimental"
bullseyeでは私の持っている camera module v2 (imx219PQ)は Legacy cameraになってしまいました。
この cameraをmjpg-streamerで動作させるためには raspi-configで Legacy camera modeを
enableにして使用する。
又は imx219PQをあきらめて USB cameraに変更してlibcamera modeで使用するかどちらかです。
1. legacy mode (Legacy camera mode enable)にする
raspi-configで legacy camera mode を enableに設定する。
/boot/config.txtの camera_auto_detectが削除される。
/boot/config.txtの start_x=1が追加される。
/boot/config.txtに dtoverlay=imx219追加する。
vcgencmd get_camera を実行すると supported=1 deteced=0 libcamera interfaces=1となる。
detected=0でも libcamera-helloや libcamera-stillなどは使用でき映像が表示される。
start.shに input_raspicam.so (raspi 専用camera) を記述する
./mjpg_streamer -i "./input_raspicam.so -fps 30 -x 640 -y 480" -o "./output_http.so" -w "./www -p 8080"
$ sh start.sh を実行するとErrorが出た。
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
error create camera
このErrorは connectorなどが外れたときにでるErrorと書いてあった。
しかし、libcamera-hello commandを受け付けて画像は表示するので、
camera関係の connectorなどに問題はない。
正常に表示OKなると書いてある記事も見つけた。
neuralassembly/mjpg-streamerは、最後の更新から2年を経過しているので、
その間に bullseye側が何度も更新してしまい、どこかの時点で動かなくなってしまった様です。
2. libcamera mode (Legacy camera disable)にして USB cameraを使用する場合
raspi-configでLegacy Cameraをdisableに設定すると
/boot/config.txt の camera_auto_detect =1 が追記される。
/boot/config.txt の start_x=1は削除される。
/boot/config.txt に dtoverlay=imx219 を追記する。
vcgencmd get_cameraに対し supported=0 deteced=0 libcamera interfaces=0を表示して
映像はでない。
raspi-configでAdvanced Options → Glamorをenableに設定しないとプレビューウィンドウを
表示しない。 ・・・これは最新の bullseye versionでは設定項目自体がなくなっている。
start.shに input_uvc.soを記述する。
./mjpg_streamer -i "./input_uvc.so -n -f 30 -r 640x480" -o "./output_http.so" -w "./www -p 8080"
libcamera-helloや libcamera-still commandをたたくと、なぜか USB cameraではなく
raspi専用 camera(imx219)の方から映像表示している。
start.shをたたいて http://192.168.1.11:8080/index.html で表示すると USB camera側から
映像を表示する。
これは、raspi-configで Legacy cameraを enableにしても同じ。
mjpg-streamerが bullseye以降でうまく動かないのであれば、
ustreamer, camera-streamerという選択肢もあります。
●ustreamer:1秒間に20 framesまでに制限してトラフィックを抑える機能を持つ。
更新は頻繁に行われている。
●camera-streamer:ustreamerから派生して作られた Programで遅延を最小限に抑える事を
目的としている。
ustreamerほど完璧に作りあげている訳ではないが頻繁に更新は行われている。
●RaspberryPi 4B mjpg-streamer install
2021.06.24
RasPi 4WD Carに Cameraを取り付けて、Open CVで画像認識をやります。
まず、4WD Carに mjgp-streamerを installします。
1年経ったら mjpg-streamerの Versionが変わって設定方法がかなり変わっています。
install 手順は下記。これは変更なし。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install subversion libjpeg8-dev imagemagick libv4l-dev
$ cd /home/pi
$ sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ sudo make
$ sudo make install
mjpg-streamer-experimentalに、新たに start.sh が提供されたので、
自分でScriptを作らなくてよくなりました。
Linuxの環境によるのかもしれませんが pathは Full pathで書かないとErrorがでました。
start.shを編集します。
----------------------------start.sh------------------------------------
#export LD_LIBRARY_PATH="$(PWD)"
↓
export LD_LIBRARY_PATH=/usr/local/lib/mjpg-streamer
#./mjpg_streamer -i "input_uvc.so " -o "output_http.so -w ./www"
↓
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/mjpg-streamer/input_uvc.so -n -f 30 -r 640x480 -d /dev/video0" -o "/usr/local/lib/mjpg-streamer/output_http.so -w /home/pi/mjpg-streamer/mjpg-streamer-experimental/www -p 8080"
$ ./strart.sh
RaspberryPiの純正カメラモジュールを使用しましたので、V4l2 Driverを使用する
ために /etc/modulesに1行追加が必要です。
$ cd /etc
$ sudo nano modules
bcm2835-v4l2 #1行追加
では、start.sh を実行してみましょう。
パソコン側のBrowserから
http://raspberrypi.local:8080 又は
http://「RaspberryPi IPアドレス」:8080
と入力すれば cameraの映像が表示されます。
IP Address の固定
電源を入れる毎にIP Address が変わってしまうと、
パソコン(Personal Computer)・スマホ(Smart Phone)側から見えなくなります。
これは不便なので、IP Address の固定を行います。
/etc/dhcpcd.conf を編集すれば固定できます。
以下の4行を追加して再起動します。
$ cd /etc
$ sudo nano dhcpcd.conf
interface wlan0
static ip_address=192.168.1.11/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
再起動したら、ifconfig を打ち込んで確認します。
wlan0: が設定した IP Address になっていれば OKです。
●RaspberryPi 4B mjpg-streamer install
2020.04.21
Raspberry Pi 4 model B に ROBOT の目になる Camera を取付ます。
USB Cameraを使用すると、Raspberry Pi の4つしかない USB Connector がふさがるので、
Paspberry Pi 専用の camera module を使用します。
これなら、Raspberry Pi 本体から Flat Cable で直接取り出せます。
install する Camera 用 SOFT は InterNet にあった、mjpg-streamer と
imagemagick の両方を installすると Camera の画像を Browser で見る事ができます。
Raspberry Pi に取付けた Display と KB とMouse で install します。
Raspberry Pi Camera module (IMX219PQ)
Raspberry Pi camera仕様
image sensor IMX219PQ (SONY 8Mp 固定解像度)
静止画解像度 3280x2464
Frame rate 1920x1080 (H262:1080 30fps 720 60fps 640x480 90fps)
電源 15pin FFC cable 150mm
github から install
git で https://github.com/ の jacksonliam さんからもらってくる。
$ sudo apt-get update
$ sudo apt-get install subversion libjpeg8-dev imagemagick libv4l-dev
$ cd /home/pi
$ sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ sudo make
$ sudo make install
Install した File を System 領域 /opt/mjpg-streamer に移動する。
$ cd /opt
$ sudo mkdir mjpg-streamer
$ cd /home/pi
$ sudo mv /mjpg-streamer/mjpg-streamer-experimental/* /opt/mjpg-streamer
起動用 File の作成
/home/pi/ 配下に mjpg-streamer Folder を作成したらその中に
nano を使用してstart_server.sh Shell script File を作成します。
$ cd /home/pi
$ sudo mkdir mjpg-streamer
$ cd mjpg-streamer
$ sudo nano start_server.sh
---------------------start_server.sh----------------------------------
#!/bin/sh
PORT="8080" #ポート番号
SIZE="640x480" #画面サイズ
QUALITY="80" #画像クオリティ
FRAMERATE="20" #フレームレート
export LD_LIBRARY_PATH=/usr/local/lib
/opt/mjpg-streamer/mjpg_streamer \
-i "/opt/mjpg-streamer/input_uvc.so -f $FRAMERATE -r $SIZE -q $QUALITY -d /dev/video0 -y -n" \
-o "/opt/mjpg-streamer/output_http.so -w /usr/local/www -p $PORT"
(注意事項)
・実行File の mjpg_streamer は、フルパスで指定しないと Error になります。
・input_uvc.so File は、フルパスで指定しないと Error になります。
・ -i から -n" \ までは連続した1行です。
・input_uvc.so の Option -y -n は、忘れると Error が多発します。
・output_http.so File は、フルパスで指定しないと Error になります。
・install して /opt/mjpg-streamer 配下にある www Folder を
output_http.soで指定した出力先の /usr/local/www Folder に
移動しないと何も表示しません。
boot/config.txtに imx219 cameraを書き込みしておきます。
buster versionでは必須。
$ cd /boot
$ sudo nano config.txt
dtoverlay=imx219 ←追加
System 領域にinstall されている www Folder内の html Tag を Folder ごと
この Shell Script の output_http.so で指定した -w /usr/local に移動します。
$ cd /
$ sudo mv /opt/mjpg-streamer/www /usr/local
Shell Script の作成が終わったら Start_server.sh の
File の実行権限(File Permission)の変更をしておきます。
$ cd /home/pi/mjpg-streamer
$ sudo chmod 755 start_server.sh
では、Shell Script を実行してみます。
実行結果はこの様な画面が出てきます。
$ ./start_server.sh
では、Raspberry Pi 4 の Web Browser を開いてみて確認しましょう。
Raspberry Pi 4 の Top 画面の右上に WiFi の表示 I-con があります。
Cursor を上に乗せると、IP Address を表示するので Memo しておきます。
192.168.1.11/24 になっていましたので Browser の URL に下記の様に key in します。
8080は、output_http.so で指定した port 番号です。
Browser には下記の様な画面が表示されます。
http://192.168.1.11:8080
Shell script を止めるには Ctal + C を、同時に key in すれば停止できます。
Raspberry Pi 4を立上げ時に mjpg-streamer が自動で起動する様に設定します。
$ cd /etc
$ sudo nano rc.local
/etc/rc.local の最後の行 "exit 0" の前に以下の1行を追加します。
sh /home/pi/mjpg-streamer/start_server.sh &
これでRaspberry Pi を立上げたら自動で Camera が起動します。
----------------------------------------------------------------------------------------------------------------------------