As for hardware, I am working with both a Pi 3B 2GB and Pi 4 8GB. The Pi 3 is probably not enough horsepower for multiple cams at full resolution, but I'm using 2 Hikvision PTZ cams at 704x480 and 10 fps reliably.
ZM v1.36 seems to use significantly less shared ram than 1.34., and Ubuntu 20.04 on the Pi 4 seems like the long term best option for me -- though I'm still working through some issues there. But the RPi Debian OS on the RP3 seems to be working pretty well -- for 2 cameras anyway. You don't need the full Desktop version; Lite has less of what you don't really need anyway.
Yet even the Desktop version was working well for me for the last few months -- until I did an apt update apt upgrade on the Pi3 that locked up half way through and corrupted the system image in a permanent way. Probably ran out of memory during the upgrade but not sure. I did not bother to shut down ZM first which was risky in retrospect.
As for uploading, one of the things I like a lot about ZM is its flexibility; you can use its components outside of the standard ZM system.
For instance you can create a script that grabs an image from one of your monitored cameras, and then uploads it to where you need it. Then you can run the script whenever you want -- either manually or perhaps on a time interval via a cron job.
This example grabs an image from monitor 3 using ZM credentials <username> <password>, saving the image as <myimage>.jpg at FTP destination <myhost>.com using credentials <ftpuser> <ftppassword>
Code: Select all
#!/bin/bash
#
# Spawn a subshell to hop over to a writeable temp directory and then write the current image
# from monitor ID #3 at 100% size. The default permission of the image file prevents copying
# so remove that restriction before exiting the subshell
#
(cd /tmp/zm ; sudo -u www-data zmu -m 3 -U <username> -P <password> -i -S 100 ; sudo -u www-data chmod 777 Monitor3.jpg)
#
# Copy the image file from the temp directory to current location and rename
#
cp /tmp/zm/Monitor3.jpg <myimage>.jpg
#
# Set up credentials for FTP transfer to the target system
#
HOST='ftp.<myhost>.com'
USER='<ftpuser>@<myhost>.com'
PSWD='<ftppassword>'
#
# Transfer a copy of the image file in the current directory to the target system
#
ftp -in $HOST <<EOF
user $USER $PSWD
put <myimage>.jpg
bye
EOF
(Since the passwords are readable you'll want to turn off the script's world read permission.)
There are probably better ways of uploading camera images, but this simple one works for me.