こんにちは。
前回はハードウェアの準備編について説明しましたが、今回はソフトウェアの実装編です。
前回記事はこちら。
まず、ラズパイでカメラをストリーミングする方法を調べた結果、以下の2つが主流のようです。
- MJPG-Streamer
- Motion
この2つを試してみました。今回の記事では1つ目のMJPG-Streamerのインストール方法について解説します。
MJPG-Streamer
概要
動作が軽量であるため、リソースが少ないラズパイゼロに向いています。Raspberry Pi OSにインストールして、WebブラウザやVLC上でストリーミングすることができます。
ただし、機能は最低限でシンプルであるため、動体検知はできません。
インストール手順
基本的にはMJPEG-StreamerのGithub通りに勧めます。
まずは動作に必要なライブラリlibjpeg-dev
をインストールします。
ホームディレクトリにGitプロジェクトをクローンします。
sudo apt update
sudo apt install -y git cmake libjpeg-dev
cd
git clone https://github.com/neuralassembly/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make
sudo make install
次に、raspi-configでカメラを有効化します。
sudo raspi-config nonint do_legacy 0
sudo reboot
再起動が終わったら、以下のコマンドで起動します。
cd ~/mjpg-streamer/mjpg-streamer-experimental
mjpg_streamer -o './output_http.so -w ./www -p 8080' -i './input_raspicam.so -x 1280 -y 720 -fps 30 -q 10'
-x, -yオプションで出力する映像サイズを変更できます。また、-fpsでフレームレートを調節できます。-qはクオリティで、10程度が負荷がかからないためおすすめです。
起動したら、以下のアドレスでアクセスします。(ホスト名がzero.localの場合です。ipアドレスでもアクセスできます。)
http://zero.local:8080
下記のようなページが表示されれば成功です。

左にあるメニューの「Stream」からライブ映像を確認できます。
以下のアドレスから映像のみを表示できます。
http://zero.local:8080/?action=stream
終了する際には、Ctrl+Cを押します。
まれに終了に失敗するため、プロセスキルで終了してください。
pkill mjpg_streamer
MJPG-Streamerを自動起動させる(シェルファイルの準備)
MJPG-Streamerを起動させるコマンドをシェルファイルで保存しておき、それをラズパイ起動時に呼び出します。
cd ~/mjpeg-streamer
vi mjpg-streamer.sh
mjpeg-streamer.sh
設定ディレクトリのUSERNAME
はユーザー名を入れてください。
#!/bin/bash
# カメラデバイス
DEV="/dev/video1"
# ストリーミングオプション
WIDTH=1280
HEIGHT=720
RES="${WIDTH}x${HEIGHT}"
FPS=30
QUALITY=10
PORT=8080
CAMERA_MODE="RPI"
# 設定ディレクトリ
cd /home/USERNAME/mjpg-streamer/mjpg-streamer-experimental
# 多重起動防止
pkill mjpg_streamer
# 起動
./mjpg_streamer -i "./input_raspicam.so -x $WIDTH -y $HEIGHT -fps $FPS -quality $QUALITY" -o "./output_http.so -w ./www -p $PORT"
exit 0
サービス化する際には、#!/bin/bash
を冒頭に入れないとうまく起動しませんでした。
ファイルに実行権限を付与します。
chmod 755 mjpg-streamer.sh
作成したシェルを起動します。
./mjpg-streamer.sh
再度http://zero.local:8080
にアクセスしてページが表示されればOKです。
MJPG-Streamerを自動起動させる(サービスの登録)
以下のコマンドを実行します。
sudo vi /etc/systemd/system/mjpg-streamer.service
mjpg-streamer.service
ここもUSERNAME
をユーザー名に置き換えてください。
[Unit]
Description=MJPG-Streamer Service
After=network-online.target
[Service]
Type=simple
KillMode=process
Restart=always
RestartSec=5
ExecStart=/home/USERNAME/mjpg-streamer/mjpg-streamer.sh
[Install]
WantedBy=multi-user.target
ファイルを作成したらsystemctlを再読込します。
sudo systemctl daemon-reload
サービスを開始します。
sudo systemctl start mjpg-streamer.service
サービスを自動開始するように設定します。
sudo systemctl enable mjpg-streamer.service
ラズパイゼロを再起動して、ブラウザから映像が表示されれば成功です。
sudo reboot
サービスを自動開始を無効化するには以下のコマンドです。
sudo systemctl disable mjpg-streamer.service
サービスの停止は以下のコマンドです。
sudo systemctl stop mjpg-streamer.service
以上でMJPG-Streamerの導入方法は終了です。お疲れ様でした。
おわりに
ストリーミングサイズやクオリティ、fpsを適切に設定すればラズパイゼロのような非力なマシンでも十分にストリーミングができることがわかりました。
次回は動体検知に対応したMotionの導入について解説します。
Be First to Comment