Raspberry Pi 4に防犯カメラCCTVシステムZoneMinderをインストールするには

Raspberry Pi 4に、ZoneMinderをインストールしてみました。

ストリーミングカメラのモニタリング・録画・動体検出等が可能です。

前回のShinobiインストール時と同様に。

Raspberry Pi 4に防犯カメラCCTVシステムShinobiをインストールするには
Raspberry Pi 4にShinobiをインストールしてみました。 先日作成しました、Raspberry Pi カメラのストリー...

Raspberry Piにカメラモジュールを接続してストリーミングを行い。

64ビット版Raspberry Pi OSでカメラ映像をストリーミングするには
最初は、64ビット版のRaspberry Pi OSにて、Shinobi CCTVを動かして。防犯カメラ、録画機能に加えて、yoloのオブジ...

そちらの映像を扱おうと考えておりましたが。

ストリーミングのオプションを調整することで、録画と動体検出はできるようになりました。しかしZoneMinder画面によるモニタリングはできていません。VLCで表示可能のため、運用上問題はありませんが、少し中途半端な状態です。

インストール手順を記録させて頂こうと思います。


Raspberry Pi OS 64ビット版のZoneMinderインストール手順

本体はRaspberry Pi 4を使用

CCTVカメラ映像の録画や動体検出を行うという目的から。

性能が高く、大容量のUSBストレージから起動が可能なRaspberry Pi 4を使用します。


Raspberry Pi OS 64ビット版(Lite)をSSDにインストール

CCTVカメラの録画ということで、microSDカードではなくUSBストレージにRaspbery Pi OSをインストールしました。

2023年9月現在、最近出荷されているRaspberry Pi 4は、最初からUSB起動が可能です。USBストレージから起動しない場合は、こちらの記事で設定が可能です。

Raspberry Pi 4のブートローダーEEPROMを最新版に更新するには
令和4年、2022年12月現在。Raspberry Pi 4のブートローダーは、このような画面なのですね。ふむふむ。 公式のRaspb...

今回、lite版のRaspberry Pi OSを使用しましたが、通常版でも問題ありません。

Raspberry Pi OSのインストール手順はこちらの記事になります。

USB起動版Raspberry Pi OS 64ビットの初期設定 令和5年(2023年)1月版
令和4年(2022年)2月。旧名称Raspbianこと、Raspberry Pi OSの64ビット版が正式リリースされました。 ...

mariadb-serverのインストール

ZoneMinder本体のインストール前に。mariadb-serverをインストールしておきます。

sudo apt install mariadb-server

インストールが完了しましたら、初期設置を行っておきます。

sudo mysql_secure_installation

英語の質問に答えて、パスワードやセキュリティの設定を行います。よくわからない場合は、こちらの記事を御覧ください。

mariadb-serverの初期設定覚書
mariadb-serverをインストール後。 mysql_secure_installationコマンドを実行して。 管理ユー...

mariadbの管理者(root)パスワードは、後でZoneMinderの設定で使用します。


ZoneMinder本体のインストール

本体のインストールは、公式資料を参考に進めました。

まずは、ZoneMinder本体をインストールします。

sudo apt install zoneminder

インストール後、zm.confファイルのグループを変更します。

sudo chgrp -c www-data /etc/zm/zm.conf

Debianのバージョンによっては、これでインストール完了の場合もありますが。

Raspberry Pi OSの場合、設定の続きがありました。


データベース作成

ZoneMinderで使用するデータベースを作成します。

次のコマンドになります。

cat /usr/share/zoneminder/db/zm_create.sql \
| sudo mysql --defaults-file=/etc/mysql/debian.cnf -u root -p
# mariadbのrootパスワード入力
echo 'grant lock tables,alter,create,select,insert,update,delete,index on zm.* to 'zmuser'@localhost identified by "zmpass";' \
| sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -u root -p
# mariadbのrootパスワード入力

ZoneMinderで使用するデータベースが作成されて、zmuserからアクセスできるようになりました。


nph-zmsパスの調整

ZoneMinderのプログラム本体は、上記のフォルダにあるようです。

nph-zmsパス設定を行います。

sudo vi /etc/zm/conf.d/01-system-paths.conf
# ZM_PATH_ZMS=/usr/lib/zoneminder/cgi-bin/nph-zms 

28行目のZM_PATH_ZMSを変更しました。


zoneminder.service起動

パスの設定が完了しましたら、zoneminder.serviceを起動しました。

sudo systemctl enable zoneminder.service --now

apache設定zoneminder.conf有効化

apacheの設定を調整し、zoneminder.confを有効にします。

/etc/apache/conf-available/zoneminder.conf

ファイルのシンボリックリンクを、/etc/apache/conf-enabledに作りました。

cd /etc/apache2/conf-enabled/
sudo ln -s ../conf-available/zoneminder.conf .
sudo systemctl restart apache2.service

apacheを再起動して、設定変更を反映しました。


タイムゾーンはWebページから設定

php.iniファイルを編集して、タイムゾーンの設定が可能なそうですが。

私はphp.iniファイルではなく、後でWebページ上で設定しました。


vlc、ffmpegインストール

実際にカメラに接続する段階で、vlcやffmpegが入っていないと、うまく接続できず、エラーメッセージも表示されないという状態になります。

vlcとffmpegをインストールしておきましょう。

sudo apt install libvlc-dev libvlccore-dev vlc ffmpeg


ZoneMinderページ表示

以上で、ZoneMinder本体のインストールが完了しました。

下記のURLにアクセスします。pi4.localはRaspberry Piのホスト名になります。ご自身の環境にあわせて変更して下さい。

http://pi4.local/zm

最初はプライバシー警告が表示されます。スクロール後、画面右下の「APPLY」ボタンで次に進めます。

コンソール画面が表示されました。


タイムゾーン設定

「Options」→「System」でシステム設定画面に移ります。

TIMEZONEを設定します。

Asia Tokyoを選択しました。


言語設定は文字化けのため保留

実は、同じ画面で言語を設定できるのですが。LANG_DEFAULT設定です。文字化けして読めないため、英語表記に戻しました。

以上でWeb上の基本的な設定が完了しました。お疲れ様でした!


モニター(カメラ)の登録

次のステップとしまして。コンソール画面から、モニター(カメラ)を登録してゆく流れになります。

ZoneMinderに対応したカメラをお持ちの場合、登録して完了ですが。

先日作成した、Raspberry Piストリーミングカメラは、設定の調整が必要でした。

Raspberry Pi ストリーミングカメラ側の調整

64ビット版Raspberry Pi OSでカメラ映像をストリーミングするには
最初は、64ビット版のRaspberry Pi OSにて、Shinobi CCTVを動かして。防犯カメラ、録画機能に加えて、yoloのオブジ...

こちらの記事で構築したRaspberry Piストリーミングカメラの場合。

作成したvideo-stream.shファイルを変更しました。

sudo systemctl stop video-stream.service
vi video-stream.sh

変更前の内容は、h.264ハードウェアエンコードしたストリーミングを、VLCのRTSPプロトコルで送信、rtspポート8554で待ち受ける内容でした。

#!/bin/sh
/usr/bin/libcamera-vid -t 0 --inline -o - \
--level 4.2 --denoise cdn_off \
--width 1920 --height 1080 \
| /usr/bin/cvlc stream:///dev/stdin \
--sout='#rtp{sdp=rtsp://:8554/stream1}' :demux=h264 \
--preferred-resolution 1080

ZoneMindeのlibvlcで認識できるように、コーデックはmjpeg(Motion JPEG)に変更、プロトコルもhttpに変更しました。画面サイズもすこし小さくしました。

#!/bin/sh
/usr/bin/libcamera-vid -n -t 0 --inline -o - \
--width 1280 --height 780 \
--codec mjpeg --denoise cdn_off \
| /usr/bin/cvlc stream:///dev/stdin \
--sout='#std{access=http, mux=ts, dst=:8554/stream1}' :demux=mjpeg \
--preferred-resolution 1080

今回、カメラモジュールV3を使用しました。オートフォーカスに対応したため、遠/近に関係なく、大変綺麗な画質で映像をストリーミングできます。

そのカメラモジュールV3のチューニングオプションに対応した内容は下記になります。

#!/bin/sh /usr/bin/libcamera-vid -n -t 0 --inline -o - \
--width 1280 --height 780 \
--codec mjpeg --denoise cdn_off \
--tuning-file /usr/share/libcamera/ipa/rpi/vc4/imx708_wide.json \
| /usr/bin/cvlc stream:///dev/stdin \
--sout='#std{access=http, mux=ts, dst=:8554/stream1}' :demux=mjpeg \
--preferred-resolution 1080

VLCから接続する場合は、下記のURLになります。

http://<Raspberry PiカメラのIPアドレス>:8554/stream1

こちらのカメラを、ZoneMinderに登録してみます。


ZoneMindeのモニター登録

コンソール画面に戻り、青い「ADD」ボタンをクリックします。

  • Source Typeは「Libvlc」を選択
  • Functionは「Mocord」を選択→動きがあれば録画

次に「Source」タブをクリックします。

  • Source PathにURLを入力
  • MethodはTCPを選択
  • Target colorspaceは32 bit color
  • Capture Resolutionは1280×720 720pを選択

「Save」ボタンで設定を保存しました。


モニターのイベント確認

登録したモニターの行、Function欄が「Captureing」と表示され、フレーム数(fps)が表示されれば、動き検出による録画が開始されています。

何かイベンがあると、動画が自動的に記録されます。

今回はコーデックにmjpegを選択したため、動画ではなく画像がフレーム数分保存されるかたちになります。

Events欄のリンクをクリックすると、実際のイベントの記録状況の確認画面を表示できます。


モニタリングはVLCを使用

今回のカメラ側の設定では、ZoneMinderでのモニター表示ができていません。

h.264ではなくmjpegを使用しましたが、記録はされますが表示がうまくいかない状況でした。

設定の問題なのか、コーデックやプロトコルの問題なのか、そのあたりもよくわかっていません。

モニタリングは、別途VLCで行う感じでしょうか。


以前作成しました、Raspberry Pi+カメラモジュールを使用しまして。

ZoneMinderで動き検出による録画ができるようになりました。

残念ながら、モニタリングは動いていません。

Raspberry PiカメラモジュールV3は、オートフォーカスに対応したため、遠近に関係なく大変綺麗な画像を得ることが可能です。

古めのRaspberry PiにカメラモジュールV3を取り付けて、防犯カメラ代わりに使用する場合は、このような構成で全く問題無い感じがします。

ZoneMinderの画面でモニタリングできませんが、VLCではモニタリングが可能です。

Raspberry Pi 4にスティックSSDを取り付ければ、長時間の録画が可能のため、容量の問題もありません。

ご興味が御座いましたら、ぜひお試し下さいませ。

スポンサーリンク

フォローする

スポンサーリンク