This release features a massive rewrite that I have been working on for the past year.
It focuses on decoupling all parts of Viseron, making it more modularized. This allows for easier integration of new functionality.
The config.yaml file will change completely so there is some work that has to be done by each user to port over to the new version.
The general config format is a component
which implements one or more domains
.
Each camera has a unique camera identifier
which flows through the entire configuration.
The nvr
component then ties all these different domains together and provides the full functionality.
The big benefit of this new format is that you can mix and match components more freely.
For instance, you could use different object detectors for different cameras, you are not tied into just one.
Config Example
ffmpeg: # <-- component
camera: # <-- domain
camera_one: # <-- camera identifier
name: Camera 1
host: 192.168.10.10
username: test
password: test
camera_two: # <-- camera identifier
name: Camera 2
host: 192.168.10.11
username: test
password: test
....
darknet: # <-- component
object_detector: # <-- domain
model: /my_custom_model/model.weights
cameras:
camera_one: # <-- camera identifier
fps: 5
deepstack: # <-- component
host: deepstack # <-- component config option
port: 5000 # <-- component config option
object_detector: # <-- domain
cameras:
camera_two: # <-- camera identifier
fps: 1
labels:
- label: person
confidence: 0.75
trigger_recorder: false
face_recognition: # <-- domain
cameras:
camera_one:
camera_two:
labels:
- person
background_subtractor: # <-- component
motion_detector: # <-- domain
cameras:
camera_one: # <-- camera identifier
fps: 1
mask:
- coordinates:
- x: 400
y: 200
- x: 1000
y: 200
- x: 1000
y: 750
- x: 400
y: 750
nvr: # <-- component
camera_one: # <-- camera identifier
camera_two: # <-- camera identifier
Frontend
There is now a UI included in Viseron, writen in React/TypeScript.
It is enabled by default and can be reached on port 8888 inside the container by default.
Currently it features basic functionality like viewing cameras, recordings and editing the configuration.
It will be expanded upon in the future.
Jetson Nano support
This release also features better Jetson Nano support through the gstreamer
component.
This means that you can utilize your Nano for hardware accelerated camera decoding and object detection.
Documentation site
The documentation has moved over from being in a README format to a dedicated site.
Hopefully it will help you use Viseron better.
I need your help on how it can be improved, writing good docs is always hard.
I am especially proud of the components page, which is mostly generated from the config schema used.
This means that the documentation and schema will always match, yay!
The documentation is hosted here: https://viseron.netlify.app/
What's Changed
- remove interval and replace with fps by @roflcoopter in #287
- Add newline after jpgboundary by @olekenneth in #355
- Add new line to jpg boundary refactoring by @olekenneth in #356
- Viseron v2 by @roflcoopter in #306
- Feature/remove dead code by @roflcoopter in #367
- fix automatic pipeline trigger error after rename by @roflcoopter in #368
- fix jetson nano crossbuilds after balenalib breaking change by @roflcoopter in #369
- make README more slim by @roflcoopter in #370
- fix broken link to contributing guidelines by @roflcoopter in #371
Full Changelog: v1.10.2...v2.0.0b1