Giter Club home page Giter Club logo

dvrlite's Introduction

DVRLite

A lightweight DVR for recording from IP Cameras when they send an onvif event. This software is licensed for all non commercial use, what constitutes commercial use under this license is at the sole discretion of the licensor, me.

A DVR loosly based on Zoneminder for recording from cameras that support onvif events. It is designed for maximum performance by offloading motion detection to the camera. This way it doesn't need to decode the video stream and writes it directly to disk, allowing it to easily manage many cameras at once or run on modest hardware.

Use a web based UI to control the application, there's currently no authentication so using it on the open internet is not supported. Via the web interface you can add/remove cameras, control the settings and view recorded video, there's currently no support for live video.

Roadmap:

  • implement date selectors on video list ✔
  • implement log filter ✔
  • implement multiple source view
  • implement event message filter ✔
  • implement quota reaping
  • implement live snapshots ✔
  • implement live video
  • implement edit source ✔
  • maybe implement watchdog (doesn't seem to be needed)
  • multiple themes ✔
  • shutdown/restart ✔
  • c++20 timezone support (once it's been added to the supported implementations)

not definites

  • add a more sophisticated post process zoned motion detection
  • add a notification system
  • authentication system

alt text

Installation:

Windows: There currently isn't any service support for windows, simply download the release extract it to a directory and run the application. To run at startup you can add a shortcut to the startup items by hitting start+r and typing shell:startup.

Linux: Either build from source as described below and cmake will automatically install or:

  • download the release
  • extract the DVRLite binary to /usr/local/bin
  • and the web folder to /usr/local/share/DVRLite/
  • and the DVRLite.service file to /usr/local/systemd/system/
  • enable the service with systemctl enable DVRLite

Build from source:

The project uses cmake and uses jsoncpp, ffmpeg, oatpp and openssl. On windows I recommend you use vcpkg and install the dependancies and then open the cmake project in visual studio. On linux install the dependancies using the system package manager and run the following commands to automatically install as a SystemD service: cmake . sudo make install

Setup

Once the application is running, the web service will default to port 8000. You can access the web ui by pointing your browser at localhost:8000. From here you can access the Settings->Config menu in the top right which you can use to set the record path.

alt text

You can then add an onvif camera by selecting the Add button beside the settings dropdown.

alt text

This menu lets you configure a camera:

  • Name: give the camera a name.
  • Address: the onvif address of the camera, for a standard onvif camera the ip address should be all that's needed and the onvif address will be constructed from that, for non conforming cameras you may need to provide the full onvif address.
  • Custom Video Address (optional): Some cameras provide higher quality video feeds on different paths from the ones provided in their onvif interface (like reolink), setting them here will force the app to use these feeds instead.
  • Username: This is the username needed to log onto the camera.
  • Password: This is the password needed to log onto the camera.
  • Sources to trigger: This is the sources you want to record when a motion detection event is sent from this camera, self means record footage from the camera you are currently setting up.
  • Event Filter (optional): If your camera provides details in it's motion event message you can use this to filter based on the contents of the message, if this is set only motion events with this text will trigger recording.
  • Record duration (seconds): The number of seconds a recording will continue after a motion detection event is registered.
  • Disk quota (mb): Not currently supported, eventually this will automatically reap the oldest recordings when the disk usage exceeds the specified quota, 0 means no reaping.
  • Record Audio: Do you want to record audio from the camera.
  • Record Video: Do you want to record video from the camera.

dvrlite's People

Contributors

1stclord avatar

Stargazers

berry  chen avatar Serg N. Kalachev avatar

Watchers

 avatar  avatar chobii_themechanic avatar

dvrlite's Issues

Installation instructions

Hi! Very interesting project. Could you provide some brief instructions how to install and setup it?

Linking errors: multiple definition of `main`

root@freenas:~/DVRLite-1.02# make
[  2%] Linking CXX executable DVRLite
/usr/bin/ld: CMakeFiles/DVRLite.dir/DVRLite.cpp.o: in function `main':
DVRLite.cpp:(.text+0x1f): multiple definition of `main'; CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:CMakeCXXCompilerId.cpp:(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c.o:(.data.rel.local+0x0): multiple definition of `info_compiler'; CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:(.data.rel.local+0x0): first defined here
/usr/bin/ld: CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c.o:(.data.rel.local+0x8): multiple definition of `info_platform'; CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:(.data.rel.local+0x8): first defined here
/usr/bin/ld: CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c.o:(.data.rel.local+0x10): multiple definition of `info_arch'; CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:(.data.rel.local+0x10): first defined here
/usr/bin/ld: CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c.o:(.data.rel.local+0x18): multiple definition of `info_language_dialect_default'; CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:(.data.rel.local+0x18): first defined here
/usr/bin/ld: CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c.o: in function `main':
CMakeCCompilerId.c:(.text+0x0): multiple definition of `main'; CMakeFiles/DVRLite.dir/CMakeFiles/3.16.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:CMakeCXXCompilerId.cpp:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [DVRLite/CMakeFiles/DVRLite.dir/build.make:602: DVRLite/DVRLite] Error 1
make[1]: *** [CMakeFiles/Makefile2:94: DVRLite/CMakeFiles/DVRLite.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
root@freenas:~/DVRLite-1.02# 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.