ラズパイ+Ubuntu+webカメラで監視カメラを作る

家でラズパイ4Bをサーバとして運用しています。外出先から部屋の様子を見るために安価なwebカメラを導入して、ストリーミングで見られるようにしました。

Linuxでは有名なmjpg-streamerを使いますが、結構情報が錯綜しているというか、その設定では動きませんでしたということが多発します。

備忘録として将来の自分のためにも残しておきます。

環境

ラズパイ:4B
OS : ubuntu 23.04

構築と設定

webカメラはこれを買いました。

ubuntu23.04が動いているラズパイのUSBにカメラを差し、認識しているかlsusbで確認します。

make、cmakeが入っていなかったのでaptで入れておきます。mjpg-streamerのインストールでも必要になるパッケージもついでに入れておきます。

# sudo apt install make build-essential cmake libjpeg-dev

次にmjpg-streamerをgitからもらってきて、インストールします。

# git clone https://github.com/jacksonliam/mjpg-streamer.git
# make
# sudo make install

起動用スクリプトを書きます。

# vi /home/yourname/mjpg-streamer/mjpg-streamer-experimental/webcam.sh

===
#!/bin/sh

export LD_LIBRARY_PATH="$(pwd)"

# MJPG-Streamerの起動シェル

# MJPG-Streamerの格納先ディレクトリ
MJPG_DIR="/home/yourname/mjpg-streamer/mjpg-streamer-experimental"

# USBカメラのデバイス名
DEV="/dev/video0"

# カメラ設定
WIDTH=1920
HEIGHT=1080
RES="${WIDTH}x${HEIGHT}"
FPS=30
QUALITY=8
PORT=8080

# カレントディレクトリ移動
cd $MJPG_DIR

# 既に動いているプロセスがあればkillしておく
pkill mjpg_streamer

# カメラ種別ごとに実行コマンドを切り替える
./mjpg_streamer -i "./input_uvc.so -d $DEV -r $RES -f $FPS" -o "./output_http.so -w ./www -p $PORT -c ID:Password"

exit 0
===

起動コマンドの-cオプションはBasic認証を設定するものです。

実行権をつけておきます。

# chmod 755 webcam.sh

systemctlに登録して、サーバが起動する時に自動起動するようにし、またデーモンとして起動します(上記シェルスクリプトで起動するとforegroundで起動する)。

# sudo vi /etc/systemd/system/mjpg-streamer.service

===
[Unit]
Description=mjpeg-streamer
After=network-online.target

[Service]
Type=simple
KillMode=process
Restart=always
ExecStart=/home/yourname/mjpg-streamer/mjpg-streamer-experimental/webcam.sh

[Install]
WantedBy = multi-user.target
===

# sudo systemctl daemon-reload
# sudo systemctl enable mjpeg-streamer.service
# sudo systemctl start mjpeg-streamer.service

これでエラーなく起動できていれば、カメラ映像をストリーミングで見られます。

http://サーバのIP:8080/

また、設定画面不要で、直接ストリーミング映像を見るならURLを次のようにします。

https://サーバのIP:8080/?action=stream

ボクはこのURLをブクマしておいて、外出先からすぐに確認できるようにしています。

タイトルとURLをコピーしました