余っている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ウェブカメラを追加します。



デバイスパス | 以下コマンドの結果から、対象デバイスを記載。たいていの場合には、/dev/video0 v4l2-ctl –list-devices |
キャプチャメソッド | Video For Linux version2 |
デバイスチャネル | 0 |
デバイスフォーマット | PAL |
キャプチャパレット | 以下コマンドで確認 v4l2-ctl -d /dev/video0 –all | grep Pixel |
Multi Buffering | Use Config Value |
Captures Per Frame | 1 |
ターゲット色空間 | 32ビットカラー |
キャプチャ解像度(pixels) | 以下コマンドの結果から確認 v4l2-ctl -d /dev/video0 –all | grep Width\/Height |


以上で、USB接続カメラをzoneminderへ登録することが可能です。途中で動画書き出しにX264エンコードを指定していることからもわかるように、USBカメラ自身はX264エンコードをしてくれず、zoneminderサーバのCPUでエンコードすることになります。
USBウェブカメラは延長できても5メートル程度なので、1つのサーバにUSBウェブカメラを沢山つけるような用途はないと思いますが、複数個つける場合には、CPUの性能見合いでつけるようにしてください。