Releases: roflcoopter/viseron
3.3.1 - Hailo-8 default model URL hotfix
Small hotfix release for the Hailo-8 default model download URL
What's Changed
- Fix HAILO8_DEFAULT_URL to be a valid URL by @roflcoopter in #1132
Full Changelog: v3.3.0...v3.3.1
3.3.0 - Webhook and Hailo components
This release is mainly focused on the implementation of the webhook and hailo components.
The webhook component allows you to integrate Viseron with any third party API using HTTP requests.
The hailo component enables support for running object detection on Hailo-8 accelerators, further broadening the support for different detectors in Viseron.
New features
- A new Hailo component has been added for running object detection on a Hailo-8 accelerator.
- A new Webhook component has been added which lets you perform HTTP requests on any system event triggered in Viseron.
The URL and payload is templatable for maximum flexibility. - In order to easily find which system event is triggered when, a System Event viewer is added to the frontend
- The
webhookcomponent uses Jinja2 for templating, and to make it easier to write and debug the templates, a new Template editor page has been added. - The
storagecomponent now has timelapse functionality, allowing you to periodically capture and store frames from your video streams in tiered fashion.
There is currently no frontend support implemented, that will come in a later release. - Added audio codec
pcm_s16beto the list of codecs which automatically transcode toaac
Changes
- Swapped to Switchroot FFmpeg for Nano devices, by @Azkali
- The datepicker on the Events page is now faster and no longer freezes when there are many events
- FFprobe retries are now handled by the domain setup
- Install more up-to-date Intel drivers to support more recent hardware (possibly at the expense of some stability)
- Improvements to the tier file handling. Moves and deletes now have priority over tier checks. This reduces the chance that file actions are pending for a long time in case of slow running tier checks.
- The Azure Pipelines Docker builds for aarch64 now runs on a self hosted aarch64 agent for faster build times.
Fixes
- Removes
ssl_early_datafrom nginx config, by @Azkali - Reduced image size for the
amd64image. Due to the newultralyticscomponent from 3.2, the image was bloated with CUDA libraries which is now fixed. - HLS playlist improvements for the Timeline view
- Fix race condition when stopping/starting cameras rapidly, which made reconnection attempts stop
Docker images will be on Docker Hub shortly
All changes
- nginx: proxy.conf: remove ssl_early_data by @Azkali in #1061
- [Draft] Use the FFmpeg implementation from switchroot instead of Nvidia's by @Azkali in #1062
- reduce image size for amd64 by not installing CUDA libraries by @roflcoopter in #1065
- improve perfomance of events page date picker by @roflcoopter in #1064
- smarter calculation of when to end an hls playlist by @roflcoopter in #1066
- merge tier check hotfix to dev by @roflcoopter in #1072
- add additional error message for tier check worker by @roflcoopter in #1071
- System event viewer by @roflcoopter in #1078
- go2rtc component doc updates by @roflcoopter in #1079
- fix jetson nano ffmpeg builds by @roflcoopter in #1080
- add jinja2 templating engine by @roflcoopter in #1081
- implement webhook component by @roflcoopter in #1082
- add docs on templating by @roflcoopter in #1084
- add link to templating docs from component configuration generator by @roflcoopter in #1086
- improve shutdown sequence when DomainNotReady is raised by @roflcoopter in #1085
- improve startup retry logic for ffprobe by @roflcoopter in #1087
- remove motion contours from motion detected event by @roflcoopter in #1088
- add pcm_s16be to unsupported codecs by @roflcoopter in #1089
- attempt to free up space on azure agent by @roflcoopter in #1090
- fix race condition when stopping and starting a camera rapidly by @roflcoopter in #1091
- Template editor by @roflcoopter in #1092
- make all processes and subprocs create new sessions by @roflcoopter in #1093
- file moves and deletes priority over tier check by @roflcoopter in #1094
- add cleanup job that checks for files with zero size by @roflcoopter in #1095
- Azure pipelines self hosted agent by @roflcoopter in #1099
- Implement timelapse frame extractions by @matvey00z in #1104
- Hailo-8 component with object detection by @roflcoopter in #1103
- Timelapse improvements by @roflcoopter in #1108
- detect if running on rpi, currently no automatic hwaccel is done by @roflcoopter in #1109
- add /ffmpeg/lib to path by @roflcoopter in #1114
- fix object detector zone examples in the docs by @roflcoopter in #1113
- fix instructions to store segments in memory by @roflcoopter in #1115
- 3.3.0 by @roflcoopter in #1112
New Contributors
- @Azkali made their first contribution in #1061
- @matvey00z made their first contribution in #1104
Full Changelog: v3.2.3...v3.3.0
3.2.3 - Hotfix for camera disconnections
This release adresses the issues #1075, #1076 and #1096
When a camera disconnected, the retry loop would sometimes get stuck, leaving cameras disconnected
Note: This is a re-release to trigger new builds due to failures of the previous one
What's Changed
- fix race condition when stopping and starting a camera rapidly by @roflcoopter in #1097
- attempt to free up space on azure agent by @roflcoopter in #1098
Full Changelog: v3.2.1...v3.2.3
3.2.2 - Hotfix for camera disconnections
This release adresses the issues #1075, #1076 and #1096
When a camera disconnected, the retry loop would sometimes get stuck, leaving cameras disconnected
What's Changed
- fix race condition when stopping and starting a camera rapidly by @roflcoopter in #1097
Full Changelog: v3.2.1...v3.2.2
3.2.1 - Hotfix for tier check exception
This release addresses the issue with the uncaught exception in #1068, which also caused object detection to stop working in some circumstances
Full Changelog: v3.2.0...v3.2.1
3.2.0 - Proper live streaming
Proper live streaming is now available in Viseron, utilizing the great go2rtc application.
Previously Viseron resorted to using the MJPEG stream for live streaming, which results in low quality and high latency.
With the new go2rtc component, Viseron can now stream using WebRTC or MSE, which gives a much better experience.
The new Live page is available at /live and can be accessed from the sidebar.
The Live page is very similar to the Events page, using the same responsiveness so that you can view multiple cameras at once.
In order to use it, you will need to update your configuration to include the new go2rtc component.
Breaking changes
portinwebserveris now deprecated. In order to support the newgo2rtcstreaming server, an NGINX reverse proxy is now included in the container, which listens to the old default port8888
New features
- A new Live Page is now available, which allows for better live streaming and support for more protocols.
- The Live Page is available at
/liveand can be accessed from the main menu. It utilizes the newgo2rtccomponent to support WebRTC/MSE streaming. - The MJPEG stream can now be accessed at the Live page by using the toggle in the extra options menu of the video player.
- The Live Page is available at
- A new
go2rtcstreaming server is now included in the container. This allows for better live streaming and support for more protocols. - NGINX reverse proxy - A reverse proxy is now included in the container to enhance performance and provide live streaming through
go2rtc. - A new
YOLOcomponent which uses Ultralytics YOLOv8 for object detection is now available. - You can now directly go to a specific timestamp on Events Page by using query parameters. More information on this can be found in the documentation.
- The EdgeTPU component can now utilize multiple EdgeTPU devices for better performance. See the updated documentation for more information.
- Fullscreen button is now available on the Events Page (and the new Live Page) to allow for a better viewing experience.
Does not work in iOS, because Apple. - New way to calculate which files to move or delete in the tiered storage system.
The new implementation uses numpy instead of pure SQL queries, which should improve performance at the cost of slightly (temporary) increased memory usage.
You can limit the CPU usage of this calculation by setting the newtier_check_cpu_limitconfig option.
You can further tune the workload using the config optionstier_check_batch_size,tier_check_sleep_between_batchesandtier_check_workers.
Changes
- HLS.js upgraded to 1.6.2
- If you have a substream with different resolution than the main stream, the video player now gets the correct resolution from the main stream
- EdgeTPU devices will now be restarted in case of multiple errors, helping to recover from temporary issues.
- Segment processing is now done in a separate process, for better performance and stability of the main process.
- Some unusual circumstances may cause the size based cleanup to fail. If thats the case and the first tier is full, a tier check as well as a cleanup job will be scheduled to remedy that.
Fixes
- Camera name overlapping the video stream controls on the Events Page
- PTZ component failing to initialize due to missing devicemgmt.wsdl file
- Fix for DeepStack face recognition not working
- Includes
coco.namesfile in the RPI3 build, which is required for the Darknet object detection model. - Properly resubscribe to MQTT topics when the connection is lost.
Developer experience
- Fixes a long standing issue with the Devcontaner failing to start due to a missing config folder.
When cloning using the instructions in the Developer docs, the config folder was not present on the host sincecloneInVolumewas used.
The config folder is now dynamically set to the correct path in the Devcontainer using the env variableVISERON_CONFIG_PATH.
Docker images will be on Docker Hub shortly
All Changes
- pin gpac version to 2.4.0 by @roflcoopter in #983
- set requested timestamp from query parameter by @roflcoopter in #984
- expose main stream resolution to get correct aspect ratio for streams by @roflcoopter in #988
- ptz: find location of .wsdl file by @roflcoopter in #989
- Go2rtc and NGINX by @roflcoopter in #991
- implement EdgeTPU support for multiple devices by @roflcoopter in #992
- add title to config.yaml code blocks by @roflcoopter in #993
- edgetpu restart on failure by @roflcoopter in #994
- read frames in subprocess by @roflcoopter in #995
- merge master back into dev by @roflcoopter in #1002
- Live page by @roflcoopter in #1007
- run fragmenter in subprocess by @roflcoopter in #1008
- trigger tier check when fragmenter cant move file to first tier by @roflcoopter in #1014
- remove config bind mount and change its location in devcontainer by @roflcoopter in #1015
- upgrade to hls.js 1.6.5 by @roflcoopter in #1017
- camera snapshot auth using cookies by @roflcoopter in #1016
- add ssh to devcontainer by @roflcoopter in #1022
- properly close queues in ChildProcessWorker by @roflcoopter in #1023
- wrap start of queue manager server in a lock by @roflcoopter in #1024
- include logo as png by @roflcoopter in #1025
- catch TypeError in duplicate log filter by @roflcoopter in #1026
- update throttling mechanism with unique throttle key by @roflcoopter in #1028
- add index to Files table to improve tier check performance by @roflcoopter in #1029
- make sure only one cleanup job can be started at a time by @roflcoopter in #1032
- delete unneeded binaries and docker images in ci by @roflcoopter in #1037
- fix timing issue with _concatenate_fragements by @john- in #1039
- Tier check file processing by @roflcoopter in #1040
- copy coco.names to rpi image by @roflcoopter in #1042
- fix: update deepstack face detection coordinates to use correct keys by @roflcoopter in #1041
- yolo component by @john- in #1033
- extract tag from docker compose file before tagging by @roflcoopter in #1043
- resub on mqtt reconnection by @roflcoopter in #1046
- make mjpeg stream viewable from Live page by @roflcoopter in #1047
- force pytorch CPU install in CI by @roflcoopter in #1048
- cap HLS error to max 200 chars by @roflcoopter in #1051
- enable react query retries by @roflcoopter in #1052
- fix cleanup jobs to run on all tier paths by @roflcoopter in #1053
- add live view documentation by @roflcoopter in #1054
New Contributors
Full Changelog: v3.1.2...v3.2.0
3.1.2 - EdgeTPU Image classification fix
Resolves an issue with EdgeTPU image classification which caused it to not function at all. Closes #1000
Full Changelog: v3.1.1...v3.1.2
3.1.1 - Camera storage config fix
Hotfix release to resolve an issue where you couldnt specify recorder or snapshots without also specifying the other under a cameras storage config
What's Changed
- fix undefined check for recorder and snapshot tiers by @roflcoopter in #981
- 3.1.1 by @roflcoopter in #982
Full Changelog: v3.1.0...v3.1.1
3.1.0 - User and Role Management
Multiple users, finally! Viseron has had authentication for quite some time, but you could only create one initial admin user during the onboarding.
This release brings a new User mangement page to the frontend, and with it a new Settings page.
Roles
Users can be assigned different roles: admin, write or read.
See the updated documentation: https://viseron.netlify.app/docs/documentation/configuration/authentication#roles
Assign cameras
If you want to restrict what cameras each user can see, you can do so by assigning specific ones to each user.
See the updated documentation: https://viseron.netlify.app/docs/documentation/configuration/authentication#assigning-cameras
New features
- Masks can now be configured for
Post processor. They are configured the same way as masks for object/motion detection. A new config optiondraw_post_processor_maskis also available for the MJPEG streams in order to debug the masks - Discord notifications component, provided by @InterN0te
- Gotify notifications component, provided by @InterN0te
- New config option
use_last_snapshot_on_errorfor FFmpeg/GStreamer. It allows for returning the previously retrieved snapshot for a camera incase of a flaky connection - New filter option on Events page to group cameras.
- New filter option on Events page to adjust the requested timestamp with the configured lookback.
Fixes
- Wait for file updates when shutting down and using
move_on_shutdown: true - Fix Docker compose documentation examples
- Fix Codeproject AI Face recognition training. Previously faces were never recognized when training
- Fix Compreface failing to start when
use_subjectswas set tofalse - Avoid reloading page when submitting login form. This caused some issues where you sometimes had to login twice
- Events are now properly sorted by timestamp in the details popup on the Events page
- When clicking on an event in the Events page, a snapshots is shown instead of video if its not available.
This calculation is now more forgiving and now has a 10 seconds grace period
Docker images will be on Docker Hub shortly
All Changes
- fix typos in docker compose examples by @roflcoopter in #930
- catch OSError when closing ffmpeg pipe by @roflcoopter in #935
- make sure we wait for file size update timers on shutdown by @roflcoopter in #934
- fix cpai face recognition training by @roflcoopter in #939
- new config option use_last_snapshot_on_error for still_image by @roflcoopter in #940
- fix mask image coordinates being reversed by @roflcoopter in #943
- Add Notification Category to Components Explorer by @InterN0te in #947
- Discord component for notifications by @InterN0te in #944
- Add Gotify notification component by @InterN0te in #941
- Post processor masks by @roflcoopter in #953
- update docs on how to add timestamp to recorded video by @roflcoopter in #954
- allow for grouping events for different cameras by @roflcoopter in #955
- better handling of compreface initialization by @roflcoopter in #962
- User management by @roflcoopter in #965
- Feature/auth improvements by @roflcoopter in #968
- assign cameras to users by @roflcoopter in #969
- properly cleanup axios interceptor and add tests for AuthContext by @roflcoopter in #970
- updated required roles for some endpoints by @roflcoopter in #972
- docs: clarification on events and timeline by @roflcoopter in #973
- add lookback adjustment when clicking on an event by @roflcoopter in #974
- Fix event sorting on the Events page by @roflcoopter in #975
New Contributors
- @InterN0te made their first contribution in #947
Full Changelog: v3.0.0...v3.1.0
3.0.0 - Continuous Recordings
This release is a big one. It mainly focuses on continuous recordings, but also includes a lot of other features and fixes.
I have been working on this release for a long time and I am very happy with the result. I hope you will enjoy it as much as I do.
The release cadence has been very slow lately and for that I am sorry. I will try to make smaller releases more often in the future.
Breaking changes
- New docker volumes are required. Please see the updated docker documentation
- Old recordings will not be compatible with the new version and wont be viewable in the UI
- Files will no longer be stored in the
/recordingsfolder, and should be removed from your docker volumes - Recordings are now in HLS format. If you need to have the recordings saved as full MP4 files you can use the new config option
create_event_clip, or use the newExportfeature in the UI. mp4file extension is now forced andextensionis removedsegments_folderis removed in favor of tier paths from the newstoragecomponent- Thumbnails are now stored in
/thumbnailsfolder (depending on the tier config) filename_patterninthumbnailis removed, stored as ID of the recordingaudio_codecbehavior changed. It is now only used as stream information. To transcode Audio, setaudio_codecunderrecordertrigger_recorderis removed in favor oftrigger_event_recording- The FFmpeg command has been changed, so if you use
raw_commandyou need to update it
New features
24/7 recordings
The main feature included in this release is the option of having 24/7 recordings.
With this comes a new component, storage which will allow you to retain data based on time (like it is today) and based one consumed space.
This allows you to use your storage to its maximum.
Documentation for how the recordings work can be found here
Updated screenshots for the frontend can be found here
Storage Tiers
Another feature of the storage component are tiers.
They allow you to store recordings on multiple media.
Say you have one 256GB SSD and a 1TB HDD, you can keep the most recent recordings on the SSD for fast access while offloading the older recordings to the HDD for archiving.
Timeline
To easily view 24/7 recordings, a new Timeline view is available.
It currently shows continuous recordings and different events such as motion, detected objects, face recognition etc.
Events
The Events view is a more concise view than the Timeline.
Here you can scroll through and view all the Events.
Other new features
- A new safe mode has been added. If Viseron cant startup due to config errors, it will restore the last known good config and start up with a minimum amount of components. This will allow you to fix the config in the UI and restart Viseron without having to manually restore the config.
- Allow empty password for cameras
- A logfile is now created in the
/configfolder. This will allow you to see the logs without having to enter the container. - New telegram component provided by @smelis, which allows sending of clips and thumbnails using Telegram.
- New ptz component provided by @smelis, which can be used by the Telegram component to control a camera.
The PTZ functionality will be ported to the web UI as well at some point. max_recording_timehas been added to therecordercomponent. This will allow you to set a maximum recording time for each recording. This is useful if you have a lot of motion events and want to keep the recordings short.record_onlyhas been added to therecordercomponent. This will allow you to record without running any detectors.still_image_widthandstill_image_heighthas been added to thecameracomponent. This will allow you to set the resolution of the still images.
Changes
- A PostgreSQL database is now running inside the container. It is not possible to use an external database at the moment.
- Upgraded to Ubuntu 22.04 which gives updated drivers to support newer hardware
- Updated to React 18
- Updated to Python 3.10
- Updated to OpenCV 4.10.0
- Updated to FFmpeg 5.1.2
- Updated CUDA
- Updated DLIB
- Updated OpenCL
- Updated VA-API
- Updated all Python dependencies
- The documentation has been updated with a lot of new chapters
Fixes
- Camera passwords are now escaped, meaning that passwords with special characters are now supported.
This has been a long standing issue which caused FFProbe to fail when trying to connect to the camera. - Properly redact sensitive information in logs
- Reduce the occurence of
KeyError: UUIDin the logs - Fix a long standing bug where frames with drawn items (like bounding boxes, masks etc) would bleed through to other frames.
Docker images will be on Docker Hub shortly