家でラズパイ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をブクマしておいて、外出先からすぐに確認できるようにしています。