I built my own NVR a half a decade ago, using motion detection on nodes (RPi Zero W), recording to a NFS share, and a object detection program running on the server using Pyionotify to detect new files. When it detected a person it sent a notification with Pushover, including a screenshot of whatever was detected, and uploaded the file to a remote server as well. Local NVR isn't worth much if people know where it is.
It went through several iterations and "i wonder if" branches, including offloading object detection to Azure ML, and using Azure IOT Hub.
While it generally worked well, i've since replaced it with mainstream NVR. UniFi protect for home and HomeKit Secure Video for my summerhouse. Less maintenance, same or better functionality :)
I definitely see a lot of value in just using the commercial solutions.
The ML algorithms seem to have improved a bit, so doing everything on a Pi is more reasonable(Or was, before they became unobtainium), but there's still the issue of... it's a DIY project you have to build.
On the other hand, the good mainstream solutions cost actual money, and everything seems to be moving to subscription models, and being able to use a $30 unmodified Amcrest is pretty nice.
They do, though a lot can be had "relatively cheap" depending on your needs.
In my summerhouse i just want to keep an eye on things when i'm not there, and a dirt cheap Eufy Pan & Tilt [1] camera costs around $50, does object classifcation on board, and has HomeKit Secure Video built in, and if you subscribe to iCloud+, it supports from 5 to unlimited cameras.
As it were, we already had an iCloud+ subscription, so the camera operates "for free". It uses very little power, and integrates with my HomeKit bridge in the summerhouse, so no additional infrastructure was needed.
Total power consumption for camera + bridge is around 7W, meaning it uses around 62 kwh / year, which matters with european energy prices going through the roof currently. Haven't seen electricity at below €0.5/kwh for a few weeks, and have seen peaks of €0.9/kwh.
Unfortunately, many well known brands are actually made by just two different Chinese companies, and are implicated in the subjugation of the Uighur people.
Check out the lists that I link to in that message.
If it weren't for the subjugation and labor rights issues, I really wouldn't care, but that is a pretty serious issue and seems like there's pretty deep involvement there.
PineCube plus a 3DP case would seem to be perfect, but it's not PTZ.
What about Reolink? Nobody seems to have anything linking them to the Uighur issue, and they are affordable with good features.
Do they support multicast DNS or any kind of discovery, or ONVIF? It's not easy to fond out how well that works just from the internet.
Another possibility is the ESP32. There are lots of camera capable modules there, but again no PTZ.
This is an important issue and I'm glad you brought it up!
One feature I'd like to add to my system is an RTSP server, so it can act as an easy web-configurable firmware for a Pi Zero W 2 or the like to act as a camera itself, or for putting analog cameras on the network with capture cards.
I also don't see the Yi cams on the list, I wonder how well those can integrate.
The issues that I've heard about Reolink have more to do with the equipment just not working well, as opposed to being involved in Uighur suppression. I don't know if Reolink does ONVIF or not, however.
And I'm not sure about many other brands. After checking to see if they are a brand owned by HikVision or Dahua, I would check the hardware compatibility lists of software like SecuritySpy (on the Mac) or Blue Iris (on Windows) to see what they say about the camera(s) in question, and also what they recommend.
There seems to be vauge rumors about them being bad for some reason, but the reviews all seem good. Maybe they're heavy users of fake reviews.
It looks like Huawei has some of the same issues too, but one exec resigned, so maybe things will improve. Xiaomi seems to have slave labor problems too.
Looks like they do have some degree of ONVIF support.
But it seems like some of them use dynamic keyframe intervals and don't send often for my keyframes-only detection trick to work(Unless the motion lasts long enough to have at least 1 keyframe), and people say it also messes up sync with sub-streams, but I've never used substreams and am not sure what the issue is.
I assume things like blue iris watch the substream and discard the main stream till they see motion, and they lose all the content in between detection and the next keyframe?
As I understand it, the typical technique is to capture both streams at once. The high-res stream is just cached locally for a short period of time, unless there is some reason to keep any part of it. The low-res stream is the one that is actively monitored for those things you do want to record.
So, you'd need to keep the two streams in sync, and you'd want frequent key frames so that you don't miss anything when you start or stop recording of the high-res stream. That would also make it a lot easier to stitch the 24x7 low-res background stream into the sections of high-res that were also captured.
Seems a bit complicated and bandwidth heavy. I wonder if it really performs significantly better than just processing only the keyframes of the full HD stream?
Most activities people want to monitor last longer than a keyframe interval, and object detection is pretty good these days.
Plus, if you do your brief local cache with HLS segments, the HLS multiplexer makes sure that every segment is a valid independent block starting with a keyframe, so you can always reliably catch the activity that happens even a few seconds before the actual trigger event.
But I suppose the 2 stream model makes sense if you want to record 24/7 no matter what, or if you need to catch brief faraway events that might not be clear enough to trip the motion/object detector.
I think the key value of doing all tracking and monitoring based on the low-res stream is that it takes a lot less CPU power to do that, and therefore if you're monitoring 20-30 cameras as once, you don't have to buy a whole stack of NVIDIA Jetson devices to do all the processing.
It went through several iterations and "i wonder if" branches, including offloading object detection to Azure ML, and using Azure IOT Hub.
While it generally worked well, i've since replaced it with mainstream NVR. UniFi protect for home and HomeKit Secure Video for my summerhouse. Less maintenance, same or better functionality :)