ZoneMinderを使ってみる

DIYする

複数のIPカメラ映像を録画するオープンソースソフトウェアである、ZoneMinderをUbuntuマシンにインストールしました。高機能で、カメラ台数や録画の制限がなく、無償で使用できます。

HomeKitで使う

IPカメラ、ネットワークカメラなどと呼ばれるセキュリティカメラ製品のほとんどは、標準的なRTSPプロトコルを採用し、さらに一部は、RTSPに加えて、監視カメラに必要とされる機能を追加したONVIF規格に準拠しています。ONVIFによって、パンチルトズーム機能や、RTSPなどの情報を提供する機能が提供されるようです。IPカメラは、安価な製品も多いので、スマートホームで活用したいところです。

Homebridgeを使えば、HomeKitからセキュリティカメラとしても使えます。以下に示す、簡単な実装の場合、録画機能がはありません。

PoE IPカメラ (2,059円) をHomeKitから使う
Ethernetに接続する安価な有線IPカメラを、Raspberry Pi4にインストールしたFFmpegとHomebridgeを使って、HomeKitに接続しました。Power over Ethernet接続の機種を選べば、カメラへの配線...

以下の例のようにすれば、HomeKitセキュアビデオの機能も使えます。そうすれば、動きなどのイベントに基づいて録画できます。

IPカメラでHomeKitセキュアビデオ (HSV) を使う
RTSP対応の一般的なIPカメラをHomebridgeで接続して、Apple HomeKitのセキュアビデオの機能を使います。HomebridgeとCamera UIプラグインを使用します。今回は安価なPoE給電カメラを使いましたが、RTS...

ただ、HomeKitセキュアビデオで複数カメラを使うためには、iCloud+の有料プランに入っている必要があります。有料プランによってできることが異なります。iCloud+を未契約の場合は、HomeKitセキュアビデオのためだけにサブスクリプションを支払うのはきついかもしれません。

  • 50GBプラン(月額130円):1台のカメラを追加できます。
  • 200GBプラン(月額400円):最大5台のカメラを追加できます。
  • 2TBプラン(月額1,300円)以上:台数に制限なくカメラを追加できます。

また、録画される動画は過去10日間に限定されています。さらに、セキュリティのためと思われますが、録画データをファイルとして取得することはできません。データサイズが大きい動画ファイルを、インターネット上のクラウドに保存するためのネットワーク負担も気になります。

そこで、ローカルなハードディスクなどに、IPカメラ動画を保存できるアプリを探してみました。

汎用のIPカメラアプリを使う

IPカメラ製品には、録画・閲覧のための製品専用ソフトウェアが付属していることもあります。でも、同じメーカーの製品で揃えるのは面倒です。さらには、クラウド保存のみ可能で、そのサブスクが有料だったりします。

一方で、RTSP/ONVIFに準拠した任意メーカーのIPカメラ画像を録画するための、汎用ソフトウェアが多数開発販売されています。リモートのストレージに保存できる製品がほとんどですので、クラウド使用料はかかりません。これらを使えば、カメラメーカーが用意した専用アプリを使わなくても、多彩なメーカー製品を一緒に使用可能です。スマートホームのMatter規格のように、RTSP/ONVIFが標準規格として確立されているおかげです。

ただし、ソフトウェア自体が割と高額です。業務用ソフトウェア市場に近い状況と思われます。例えば、Appleエコシステムの人向けならば、IPCamsというアプリがあります。macOS, iOS, tvOS, watchOSの全てで動作します。

‎IP Camera Viewer - IPCams
‎IPCams is a best in class app for viewing your IP security cameras. Connect an ONVIF, RTSP, MJPEG, or HLS camera and vi...

RTSPにもONVIFにも対応しています。手元のIPカメラを設定したらすぐに使用可能でした。無料で使えて素晴らしいと一見思えるのですが、実は無償で使えるカメラ2台までです。それ以上の場合は、22,000円のProバージョンを購入する必要があります。

このほか、Windows, Linux向け製品や、NAS製品向けのカメラ録画アプリをいくつか探しましたが、同じような相場でした。カメラ1台あたり40ドルとか、1年ライセンスで100ドルくらいが相場でした。趣味で遊ぶには、少しハードルが高いです。

ZoneMinder

それで見つけたのがZoneMinderというLinux用オープンソースソフトウェアです。以下がサイトです。

ZoneMinder - Home
A full-featured, open source, state-of-the-art video surveillance software system.

無償で配布していて、カメラ台数の制限もありません。有償サポートと、寄付(寄付額は任意)で運営しているようです。ダウンロードページには、Ubuntu, RedHat, Debianそれぞれのパッケージと、ソースコードへのリンクがあります。Android/iOS用のモバイルアプリもあるようです。

現時点では、ZoneMinder 1.36 The Memory Remainsというのが通常版の最新版です。このほか、ZoneMinder Proという有償版もあります。ただProで提供される機能は、ユーザごとに映像へのアクセス制御するなどの業務用の機能で、一般家庭での使用には関係無いようです。無償の通常版で良いでしょう。以下では、ZonMinder 1.36 The Memory Remainsをインストールして、カメラを設定します。

インストール先

ZoneMinderは、Linuxマシンでサーバーとして動作します。カメラの設定や動画表示などのユーザインタフェースはすべてWeb経由です。なので、MacやWindowsなどで動作するWebブラウザから設定できます。スマホ用の操作アプリも用意されているようです。LinuxのデスクトップUIは使用しないので、インストールするLinuxも、デスクトップ版ではなく、CUIで操作するサーバー版で良いです。

以下では、昔に買ってお蔵入りになっていた古い小型コンピュータ Intel NUCを使います。Haswell世代のCore i5-4250Uを搭載してます。2.5インチHDD/SSDも内蔵できるので、動画を大量に保存できます。これにディスプレイもキーボードも接続しないで、サーバーとして稼働させます。

これにUbuntu Server 22.04.3 LTS をインストールしています。実はZoneMinderでは、Ubuntuデスクトップ環境が必要かと勘違いして、以下の記事のように、一旦はデスクトップ版をインストールしました。

macOSの画面共有 (vnc) でUbuntu Desktopを使う
Ubuntu DesktopでホームサーバPCを作り、Macから画面共有で使いたいと思い、手元の古い小型コンピュータにUbuntu Desktop 22.04.3をインストールしました。ところが、ディストリビューションの構成では、ログアウト...

でも不要だったことがわかり、サーバー版を再インストールしました。Homebridgeを動作させているRaspberry Piでも、ほぼ以下の手順でZoneMinderをインストールできるはずです。

インストール準備

Ubuntu版を配布しているページでは、PPA (Personal Package Archive)という方式で公開していました。PPAを使うのは初めてだったので、調べつつ進めました。こちらにも手順が書かれていました。ZoneMinder 1.36 The Memory Remainsは、iconnor/zoneminder-1.36 という名前ですので、

sudo add-apt-repository ppa:iconnor/zoneminder-1.36

というコマンドでアーカイブを追加できるようです。

インストールする

この後、以下のようにしてインストールします。

sudo apt update
sudo apt install zoneminder

apache, mysqlなどを使用するようです。この後、apacheにZoneMinder関係の設定をして、

sudo a2enmod rewrite
sudo a2enconf zoneminder
sudo systemctl restart apache2

ZoneMinderを自動起動するよう設定して、起動します。

sudo systemctl enable zoneminder
sudo systemctl start zoneminder

Web UIにアクセス

この後、任意のコンピュータからWebブラウザでhttp://<hostname>/zmにアクセスすると、ZoneMinderのコンソールが開きます。このマシンにはあらかじめmDNSをインストールしていて、Ubuntuコンピュータにnucという名前をつけていたので、数字のIPアドレスではなくて、nuc.localでアクセスできました。

最初の注意書きに同意すると、コンソールページが開きます。カメラが未登録なので、カメラのリストは空です。

カメラを追加する

カメラを追加してみます。ADDを選びます。最小限記入すべきところは、Source PathとCapture Resolutionです。以前紹介したWansviewのWi-Fiカメラ

を動かし、そのRTSP URLをSource Pathに書きました。またサイズは、720pサイズを指定しました。

これでカメラが1台追加されました。

クリックすると画像を確認できます。

取得した動画は、デフォルトで複数のJPEG画像として保存されますが、カメラからの生データ(今回の場合はMPEG-4)でも保存できます。

録画トリガーの設定

カメラからの動画を保存するタイミングも指定できます。追加したカメラのリストの中に、Functionという項目があります。先ほどの写真ではMocordという設定になってます。これが録画トリガーの設定です。

この部分をクリックすると他の設定に切り替えられます。

Screenshot

ここにあるように、None, Monitor, Modest, Record, Mocord Nodetectが選べます。

  • None – モニターを停止
  • Monitor – ライブ映像を示すのみ。画像分析は行われず、録画もされない。
  • Modect – MOtion DEteCTtion の略。動き検出に従ってイベントを発生し、録画する
  • Record – 動き検出は行わず、連続録画する。
  • Mocord – 連続録画し、動き検出された部分は強調表示する。
  • Nodect – No DEteCTtion の略。外部トリガーを利用するための特別なモード。動き検出は行われないが、外部トリガーによるイベントが記録されます。

なので、Modectを選択しておくのが一般的だと思いました。

追加の設定

こちらにZoneMinderの解説ページがあります。他の情報なども見ながら少しずつ設定していこうと思います。

Introduction — ZoneMinder documentation

とりあえず設定したことを、以下に加筆していきます。

パスワードを設定

デフォルトでは、パスワードなしでWeb UIにアクセスします。パスワードを付けるには、Options, Systemの中にあるOPT_USE_AUTHの項目:

にチェックを入れます。Saveするとすぐにページが閉じて、アカウント名:パスワードを聞かれます。未設定の段階なので少し焦りましたが、デフォルト値のadmin:adminで開きます。この後、Options, Usersでadminのパスワードを変更したり、adminを削除して新ユーザを登録することができます。

時刻表記の設定

録画記録の日付表記のデフォルトは、月/日/年(2桁)です。USタイプですね。読みにくいので日本式に変更します。

Options, Systemの中に、LOCALE_DEFAULTという項目があります。

これをja_JPに設定すると、上記の例の場合、2023/11/23という見慣れた表記になりました。

タイムゾーンの設定

でも、タイムゾーンがUTCのままです。日本時間にしたいところです。タイムゾーンの変更は、実は面倒で、PHPの設定で変更するようです。/etc/php/8.1/apache2/php.ini をエディタで開いて、Dateの場所を探して、Asia/Tokyoに設定しました。

[Date]
; Defines the default timezone used by the date functions
; https://php.net/date.timezone
date.timezone = "Asia/Tokyo"

これを保存し、apache2を再起動しました。

sudo systemctl restart apache2

これでJSTになりました。

まとめ

複数のIPカメラ映像を録画するオープンソースソフトウェアである、ZoneMinderをUbuntuマシンにインストールして使ってみました。動きを検出して、その部分を録画してくれます。多機能なアプリの基本的な機能を使った状況です。これから少しずつ使い込んでいきたいと思います。

コメント

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