Table of Contents

Raspberry Pi Camera on ZoneMinder

I spent a lot of time trying to find some good software to run on a Raspberry Pi to turn it into a camera. Even tried to write my own using Perl, but all the libraries are in Python, so it took too much for a simple project.

I found the v4l2rtspserver (https://github.com/mpromonet/v4l2rtspserver) and decided to try it. The author has a good page, but assumes I knew how to configure ZoneMinder (which was mistaken).

Anyway, no GUI needed, so I did the Raspberry Pi OS Lite (https://www.raspberrypi.org/software/operating-systems/) and set it up, then did the following. Ended up with a pretty decent camera that is not “phoning home” with all your images.

Configure Raspberry Pi

  1. Enable wlan by adding the following to /etc/wpa_supplicant/wpa_supplicant.conf
    country=US
    network={
       ssid="your ssid"
       psk="your psk"
    }
  2. Enable camera interface
    raspi-config
    # go to Interface, and enable camera
  3. Verify camera works
    raspistill -v -o test.jpg

Install v4l2rtspserver on camera

# get pre-req's
apt -y install cmake liblog4cpp5-dev libv4l-dev git
git clone https://github.com/mpromonet/v4l2rtspserver
cd v4l2rtspserver
cmake .
make
sudo make install
v4l2rtspserver.service
# systemd configuration for v4l2rtspserver
# /etc/systemd/system/v4l2rtspserver.service
 
[Unit]
Description=v4l2rtspserver rtsp streaming server
After=network.target
 
[Service]
#ExecStartPre=/usr/bin/v4l2-ctl --set-ctrl vertical_flip=1
ExecStartPre=/usr/bin/v4l2-ctl --set-ctrl h264_i_frame_period=5
ExecStart=/usr/local/bin/v4l2rtspserver -F 5 -W 640 -H 480
#ExecReload=/bin/kill -HUP $MAINPID
Type=simple
User=root
Group=video
Restart=always
 
[Install]
WantedBy=multi-user.target
systemctl start v4l2rtspserver

Zoneminder Configuration

Create a new monitor in ZoneMinder with the following parameters

You should soon see the output in zoneminder.

Production

For production, change the resolution of both the camera and the ZoneMinder configuration

  1. Edit /etc/systemd/system/v4l2rtspserver.service
    1. Change -W and -H (width and height) to your desired parameters
      1. 1920 x 1080 (1080p) Gives you a lot of details, but also transfers a lot of traffic and is fuzzy
      2. 1280 x 720 (720p) Is a lot lower bandwidth and “prettier” picture
      3. # reload the systemctl daemon
        systemctl daemon-reload
        # reload the config for v4l2rtspserver
        systemctl restart v4l2rtspserver
        # Set v4l2rtspserver to autostart
        systemctl enable v4l2rtspserver
  2. Edit Monitor on ZoneMinder
    1. Set Capture Resolution to same values as camera