zoneminderへUSBウェブカメラを登録する方法

余っているUSB接続のウェブカメラや、PC内臓のカメラをzoneminderに登録する際の手順です。

もし、新規購入する検討をしている場合には、USB接続のカメラの場合は、サーバ自身からUSBケーブルが届く範囲にしか設置できない為、監視カメラ、見守りカメラ用途であれば、ネットワーク接続のONVIF対応ネットワークカメラを購入することをお勧めします。

zoneminderを実行するユーザーをvideoグループに所属させる

当サイトのセットアップ手順を見てインストールする場合には、そちらで実施済みかと思いますが、まだ、以下のグループ割り当てをしていない場合には実行してください。

usermod -a -G video www-data

USBカメラの解像度や、ビデオフォーマット情報を確認する

zoneminderへローカルカメラを登録する際には、USBカメラの解像度やビデオフォーマットを登録する必要があります。カタログ等から確認することが出来ないものもありますので、linux上のコマンドから確認します。以下、実行したコマンドとその出力例を載せておきます。

# v4l-utilsをインストールする
apt install v4l-utils

# サーバに接続されているUSBカメラをリスト表示する
v4l2-ctl --list-devices

> UCAM-C0220F: UCAM-C0220F (usb-0000:38:00.3-4):
>        /dev/video0
>        /dev/video1
>        /dev/media0

# 対象デバイスの情報を全部出力
v4l2-ctl -d /dev/video0 --all
> UCAM-C0220F: UCAM-C0220F (usb-0000:38:00.3-4):
>         /dev/video0
>         /dev/video1
>         /dev/media0
> 
> 
> Driver Info:
>         Driver name      : uvcvideo
>         Card type        : UCAM-C0220F: UCAM-C0220F
>         Bus info         : usb-0000:38:00.3-4
>         Driver version   : 5.4.55
>         Capabilities     : 0x84a00001
>                 Video Capture
>                 Metadata Capture
>                 Streaming
>                 Extended Pix Format
>                 Device Capabilities
>         Device Caps      : 0x04200001
>                 Video Capture
>                 Streaming
>                 Extended Pix Format
> Media Driver Info:
>         Driver name      : uvcvideo
>         Model            : UCAM-C0220F: UCAM-C0220F
>         Serial           :
>         Bus info         : usb-0000:38:00.3-4
>         Media version    : 5.4.55
>         Hardware revision: 0x00000002 (2)
>         Driver version   : 5.4.55
> Interface Info:
>         ID               : 0x03000002
>         Type             : V4L Video
> Entity Info:
>         ID               : 0x00000001 (1)
>         Name             : UCAM-C0220F: UCAM-C0220F
>         Function         : V4L2 I/O
>         Flags         : default
>         Pad 0x01000007   : 0: Sink
>           Link 0x02000010: from remote pad 0x100000a of entity 'Extension 4': Data, Enabled, Immutable
> Priority: 2
> Video input : 0 (Camera 1: ok)
> Format Video Capture:
>         Width/Height      : 640/480
>         Pixel Format      : 'YUYV' (YUYV 4:2:2)
>         Field             : None
>         Bytes per Line    : 1280
>         Size Image        : 614400
>         Colorspace        : sRGB
>         Transfer Function : Default (maps to sRGB)
>         YCbCr/HSV Encoding: Default (maps to ITU-R 601)
>         Quantization      : Default (maps to Limited Range)
>         Flags             :
> Crop Capability Video Capture:
>         Bounds      : Left 0, Top 0, Width 640, Height 480
>         Default     : Left 0, Top 0, Width 640, Height 480
>         Pixel Aspect: 1/1
> Selection Video Capture: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
> Selection Video Capture: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
> Streaming Parameters Video Capture:
>         Capabilities     : timeperframe
>         Frames per second: 30.000 (30/1)
>         Read buffers     : 0
>                      brightness 0x00980900 (int)    : min=-127 max=127 step=1 default=0 value=0
>                        contrast 0x00980901 (int)    : min=0 max=127 step=1 default=64 value=64
>                      saturation 0x00980902 (int)    : min=0 max=255 step=1 default=64 value=64
>                             hue 0x00980903 (int)    : min=-16000 max=16000 step=1 default=0 value=0
>  white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
>                           gamma 0x00980910 (int)    : min=16 max=500 step=1 default=100 value=100
>            power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
>                                 0: Disabled
>                                 1: 50 Hz
>                                 2: 60 Hz
>       white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=5200 value=5200 flags=inactive
>                       sharpness 0x0098091b (int)    : min=0 max=31 step=1 default=4 value=4
>                   exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=3
>                                 1: Manual Mode
>                                 3: Aperture Priority Mode
>               exposure_absolute 0x009a0902 (int)    : min=1 max=5000 step=1 default=625 value=625 flags=inactive



上記コマンドの実行結果から、大事なのは「Pixel Format」と、「Width/Height」の値なのでメモって下さい。

v4l2-ctl -d /dev/video0 –all | grep Pixel
Pixel Format : ‘YUYV’ (YUYV 4:2:2)
Pixel Aspect: 1/1
v4l2-ctl -d /dev/video0 –all | grep Width\/Height
Width/Height : 640/480

zoneminderへの登録

コンソールから、以下の通りUSBウェブカメラを追加します。

コンソールから追加を選択

名前は任意。ソースタイプは「ローカル」、機能は「Mcord」、有効化はチェックを入れる。
ソースタブでは、Linux上で確認した以下項目を入力する
デバイスパス以下コマンドの結果から、対象デバイスを記載。たいていの場合には、/dev/video0
v4l2-ctl –list-devices
キャプチャメソッドVideo For Linux version2
デバイスチャネル0
デバイスフォーマットPAL
キャプチャパレット以下コマンドで確認
v4l2-ctl -d /dev/video0 –all | grep Pixel
Multi BufferingUse Config Value
Captures Per Frame
ターゲット色空間32ビットカラー
キャプチャ解像度(pixels)以下コマンドの結果から確認
v4l2-ctl -d /dev/video0 –all | grep Width\/Height

Storage Areaに、任意の物を。JPEGの保存はDisabled、動画書き出しにどうがX264 Encodeを指定。

画像バッファサイズに50を指定して、保存を押下

以上で、USB接続カメラをzoneminderへ登録することが可能です。途中で動画書き出しにX264エンコードを指定していることからもわかるように、USBカメラ自身はX264エンコードをしてくれず、zoneminderサーバのCPUでエンコードすることになります。

USBウェブカメラは延長できても5メートル程度なので、1つのサーバにUSBウェブカメラを沢山つけるような用途はないと思いますが、複数個つける場合には、CPUの性能見合いでつけるようにしてください。