Skip to content

【実装編①】Raspberry Pi Zero Wでペットカメラを作る(MJPG-Streamer)

こんにちは。

前回はハードウェアの準備編について説明しましたが、今回はソフトウェアの実装編です。

前回記事はこちら。

まず、ラズパイでカメラをストリーミングする方法を調べた結果、以下の2つが主流のようです。

  1. MJPG-Streamer
  2. 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

下記のようなページが表示されれば成功です。

faf67bfa image

左にあるメニューの「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の導入について解説します。

カテゴリRaspberry Pi

Be First to Comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントは日本語で入力してください。(スパム対策)

CAPTCHA