ゆるエンジニアはいろいろ遊びたい

FAエンジニアが週末にいろいろ遊ぶブログです

RaspberryPi zero2WでカメラモジュールV2をブラウザ表示する

ここ1週間カメラモジュールV2をブラウザで表示したいと思い試しています。なかなかできずに疲弊しています。
ラズパイのOSをbullseyeにしたので、今度こそはできるはず
bullseyeでは、Legacy Cameraを有効化しないとカメラが使えません。

sudo raspi-config

で、Interface OptionsからLegacy Camera Enable/disableを選択し、"はい"を選択するとカメラを有効になります。再起動後確認をします。

vcgencmd get_camera

OKならsupported=1 detected=1と表示されます。

ls /dev/video*
v412-ctl --list-formats

でも確認ができます。
次にmjpg-streamerをインストールします。まずは関連モジュールから

sudo apt update
sudo apt install -y \
  git cmake build-essential \
  libjpeg-dev \
  libv4l-dev

そしてmjpg-streamerを取得します

cd ~
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make

成功すると、input_uvc.so output_http.soなどが生成されます。
ストリーミングするには、

./mjpg_streamer \
-i "./input_uvc.so -d /dev/video0 -r 640x480 -f 15" \
-o "./output_http.so -p 8080 -w ./www"

を実行し、ブラウザで

http://ラズパイのIPアドレス/?action=stream

を開くと、カメラからの映像が出力されました。
これをラズパイ起動時に自動起動します。おなじみのnanoでサービスファイルを作ります。

sudo nano /etc/systemd/system/mjpg-streamer.service
[Unit]
Description=MJPG Streamer Camera Service
After=network.target

[Service]
Type=simple
User=****
WorkingDirectory=/home/****/mjpg-streamer/mjpg-streamer-experimental
ExecStart=/home/****/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer \
  -i "/home/****/mjpg-streamer/mjpg-streamer-experimental/input_uvc.so -d /dev/video0 -r 640x480 -f 15" \
  -o "/home/****/mjpg-streamer/mjpg-streamer-experimental/output_http.so -p 8080 -w /home/****/mjpg-streamer/mjpg-streamer-ex>

Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

systemdに認識させます。

sudo systemctl daemon-reload
sudo systemctl start mjpg-streamer

「****」はユーザー名です。これでブラウザからみれればOK。自動起動を有効化します。

sudo systemctl enable mjpg-streamer

結果として、RaspberryPi OSのバージョンがbullseyeでなければmjpg-streamerは使えませんでした。
trixie、bookwormとインストールして全く上手くいかず、ようやくできました。
かなり深い沼でしたが脱出できてよかった。