A network video recorder (NVR) is a specialized computer system that includes a software program that records video in a digital format to a storage device.
NVR equipment is richer in functionality and practicality in terms of setup and operation than DVR. The NVR is connected to a local computer network through which it gains access to surveillance cameras. Here, IP cameras are used, which independently process the data (digitization and encoding), and then transmit it to the recording device.
NVR home surveillance systems are generally wireless, tend to be easy to set up, can be accessed through a web browser, and allow the user to be notified by email if an alarm is triggered.
Moreover, new generation NVR solutions is capable of not only capturing an image, but also analyzing it in real time. This includes motion detection or object recognition.
This article is going to show you a few open source NVR solutions which you can install and configure them to suit your specific needs.
Shinobi boasts itself as "The Next Generation in Open-Source Video Management Software". Designed to be an alternative to ZoneMinder, it has grown from a pet project to a full-fledged solution, now supporting over 6000 IP and USB Cameras.
Shinobi is divided into two distinct branches:
- Shinobi Community Edition (Shinobi CE) is a free, community-supported version, licensed under GPLv3.
- Shinobi Pro, licensed under Shinobi Open Source EULA, includes professional support and regular updates.
Despite being new to the market, Shinobi has mobile apps already, although things are still in public beta. Here's a non-comprehensive list of Shinobi major features for you to consider :
- Hardware-accelerated video recording.
- Websocket streaming.
- Master-slave based cluster mode
- AI-powered real-time motion detection and pattern analysis using TensorFlow.
- Support a wide range of video/audio formats.
- Remote storage management (Amazon S3, WebDAV, Backblaze B2).
- You can specify storage medium for each camera.
- Deep camera controls management (PTZ, IR).
- Ability to switch between "normal" transmission mode and JPEG mode, less bandwidth intensive and with lower latency (very useful for moving PTZ or cutting audio streams).
- Automatic alerts (email, discord).
- LDAP compatibility.
- Scripting (default by superuser) during pre-defined events.
- Camera schedule for pre-defined events.
Before Shinobi, Zoneminder is the first thing you need to know if you want to set up your own NVR system. It's probably the most mature open source CCTV system for Linux. However, due to the old architecture, it can't keep up well with modern, high-resolution camera of today.
Zoneminder advantages :
- Web-based interface allows for easy access everywhere
- Supports a wide range of cameras
- Actively maintained by the community
- Real time Object, Person detection and Blended event summaries with EventServer or zmMagik
- Supports ARM-based devices
- Mature mobile applications : zmNinja is available for Android, iOS and a few other desktop platforms
Viseron is a very new open source NVR solutions and its features are being actively developed. However, it looks really promising as modern technologies are coming into the mix.
From multiple object detection backend and extensive hardware acceleration support, Viseron may be the choice that suits you. Some of its notable features are listed below.
- Self-hosted, implemented in Python
- Supports multiple different object detectors, record videos on detected objects:
- YOLOv3/4 Darknet using OpenCV
- Tensorflow via Google Coral Edge TPU
- Motion detection, face recognition
- Lookback, buffers frames to record before the event actually happened
- Multiarch Docker containers for ease of use.
- Support any amd64, aarch64 or armhf machine running Linux, as well as Raspberry Pi 3/4.
- Native support for RTSP and MJPEG
- Supports hardware acceleration on different platforms : CUDA for systems with a supported GPU, OpenCL, OpenMax and MMAL on the RaspberryPi 3B+, Intel QuickSync with VA-API
- Supports specifying zones to limit detection to a particular area to reduce false positives
- Masks to limit where motion detection occurs
- Stop/start cameras on-demand over MQTT
- Home Assistant integration via MQTT
- Easy installation through unRAID Community Application platform
Moonfire NVR is also a new NVR solution written in Rust and React.
Although not being a full-fledged solution, Moonfire NVR is still worth checking if you don't need to many features and want to avoid complex setups. It can also be used on cheap hardware as it doesn't re-encode the streams.
- Write H.264-over-RTSP streams from IP cameras directly into disk, so very little processing power needed.
- On a Raspberry Pi 2, Moonfire NVR can handle 6 separate 1080p/30fps streams without taking more than 10% CPU power.
- Basic web interface.
- No support yet for motion detection.
Frigate is a newly developed local NVR which aims to power smart homes with tightly integrated0 AI object detection features. It uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras.
Frigate also supports Google Coral Accelerator - the latest innovation in machine learning. The Coral is simply a TPU coprocessor that will outperform even the best CPUs in video workloads. According to the developer, Coral USB Accelerator can process 100+ FPS with very little overhead.
As of this writing, Frigate has a few notable features:
- Tight integration with Home Assistant via a custom component
- Designed to minimize resource use and maximize performance by only looking for objects when and where it is necessary
- Leverages multiprocessing heavily with an emphasis on realtime over processing every frame
- Uses a very low overhead motion detection to determine where to run object detection
- Object detection with TensorFlow runs in separate processes for maximum FPS
- Communicates over MQTT for easy integration into other systems
- Records video clips of detected objects
- 24/7 recording
- Re-streaming via RTMP to reduce the number of connections to your camera
Supports a wide range of models, included Raspberry Pi (A, B, A+, B+, Compute Module, Zero and Zero W models), Raspberry Pi 2, 3, 4, Odroid C1/C1+/C2, Odroid XU4/XU4Q/HC1/HC2/MC1, Nano Pi Neo2, Tinker Board, etc. See more at https://github.com/ccrisan/motioneyeos/wiki/Supported-Devices
MotionEyeOS is the perfect solution to build your own surveillance system because it is simple to install and has a web-based, user-friendly interface that is responsive in practically any browser.
It supports most USB cameras, Raspberry Pi camera modules, and IP cameras. Additionally, it brings other useful features when it comes to a surveillance system:
- Motion detection with email notifications
- You can set set a working schedule
- Take still images
- Store your files in SD card, USB drive, or upload your files to Google Drive or Dropbox
- Access your media files through FTP server or SFTP server