User Tools

Site Tools


software:zoneminder:picamera

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

  • Source Type: Remote
  • Remote Protocol: RTSP
  • Remote Method: RTP/Unicast
  • Remote Host Name: Hostname or IP
  • Remote Host Port: 8554
  • Remote Host Path: /unicast
  • Capture Width: 640
  • Capture Height: 480

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
software/zoneminder/picamera.txt · Last modified: 2021/06/06 01:34 by rodolico