Releases: roflcoopter/viseron
v3.0.0b6 - GStreamer fix and VAAPI support
Fixes
- Small fix to GStreamer. A bug was introduced when upgrading to Ubuntu 22.04 which caused pipelines to hang
- Support for VAAPI decoding of streams in GStreamer
Full Changelog: v3.0.0b5...v3.0.0b6
v3.0.0b5 - Delete unwanted files instead of moving
Fixes
- Make sure to instantly delete files instead of moving them to succeeding tiers that wont store them
- Crossbuild gpac so it works on aarch64, jetson-nano etc
- Make sure jetson-nano finds the correct postgresql version
Full Changelog: v3.0.0b4...v3.0.0b5
v3.0.0b4 - Ubuntu 22.04 Jammy
Fixes
- Improve handling of clip created by
create_event_clip
- Frontend breadcrumbs partially blocking icons in header
- Show Viseron version in the footer and the logs
- Containers are now based on Ubuntu Jammy and Python 3.10
- EdgeTPU runs in a separate python 3.9 shell since it does not support Python 3.10 yet
- Automatic PostgreSQL version upgrades
- Upgrade CUDA to 12.3
- Upgrade OpenCV to 4.9.0
- Upgrade Darknet
- Upgrade Dlib to 19.24.1
- Upgrade OpenCL and VA-API
- Make sure that postgres major version upgrades succeed when superuser != postgres
Full Changelog: v3.0.0b3...v3.0.0b4
For discussions, please use this discussion: #721
v3.0.0b3 - Fix builds
Small version bump to fix failing Azure builds
v3.0.0b2 - Fix playback and running as root
Various fixes for the v3.0.0b1 release
Fixes:
- Make sure thumbnails are lazyloaded properly on Events tab
- Set a new HLS Client ID everytime the source changes. Resolves some playback issues
- Make Camera Grid on Events page scrollable so the page remains the same size no matter how many cameras you have.
- Reduce some spacing in the frontend
- The Hover Line which shows the time is now properly positioned
- Connect to DB using the postgres user to allow running the container as root
- Set default value for EXTINF for fragmented mp4s if it cant be read properly from the manifest file.
This resolves an issue where playback and loading of the timeline would fail because there were segments that hadEXTINF: null
in the DB
If you get an error similar to this: psycopg2.OperationalError: connection to server at "localhost" (::1), port 5432 failed: FATAL: role "postgres" does not exist
you need to stop Viseron and delete the postgresql
folder in the config dir.
On next restart Viseron will recreate the DB with proper permissions
v3.0.0b1 - 24/7 recordings
This is a pretty massive release that brings a number of new features and improvements.
Documentation can be found here: https://dev--viseron.netlify.app/
Features
24/7 recordings
The main feature developed here 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.
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.
Documentation for the storage component can be found here: https://dev--viseron.netlify.app/components-explorer/components/storage
Timeline
To easily view 24/7 recordings, a new Timeline view is available.
It currently shows continuous recordings, motion events, detected objects.
Face recognition and License plate recognition will be available soon as well.
Events
The Events view is a more concise view than the Timeline.
Here you can scroll through and view all the Events.
Currently it shows only recordings but more events like face recognition etc is in the works.
You cannot view 24/7 recordings here.
Breaking Changes
- Old recordings are not yet migrated over to the new format and will not be viewable in Viseron
- 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
- Recordings folder structure has changed
mp4
file extension is now forced andextension
is removedsegments_folder
is removed in favor of tier paths- Thumbnails are now stored in /thumbnails folder (depending on the tier config)
filename_pattern
inthumbnail
is removed, stored as ID of the recording
See the #716 v3.0.0 PR for tasks left to do before final release is ready.
v2.3.1 - Jetson Nano GStreamer fix
Fix Failed to load component gstreamer: No module named 'gi'
for the jetson-nano
container.
Closes #672
v2.3.0 - CodeProject AI and License Plate Recognition
This is a smaller release with a few new features and fixes.
I am working hard on 24/7 recordings that I hade planned to release together with these changes, but its taking a bit longer than i had anticipated.
If you are interested in that, sit tight for the next release! You can follow my progress here: #619
CodeProject AI component
A new component which leverages CodeProject AI's computer vision capabilities is included in this release.
As of now it supports object detection, face recognition as well as a new post processor, Automatic License Plate Recognition!
Automatic License Plate Recognition (ALPR)
A new post processor is now available for ALPR.
Currently only CodeProject AI supports it, but in the future more variants may be supported.
Developer Experience
I have started to work on a better Developer Experience together with some proper Developer documentation.
It is still in early stages and the inner workings of Viseron are not explained yet, but it will improve over time.
The biggest addition to the Developer Experience this release is the support for VSCode Devcontainers.
This makes it significantly easier to get going with development, as all you have to do is spin up the container!
I have been using this myself for some time now and it has accelerated my work significantly
The new Developer docs can be found here : https://viseron.netlify.app/docs/developers
Changes and fixes
There are also a small number of changes and improvements.
- New config option for the camera domain,
still_image
It allows you to configure a URL to fetch the snapshots that are displayed in the UI from.
Useful if you woudl lke to get full resolution still images in the UI while still using the substream for detection
Understill_image
you can specifyrefresh_interval
which makes the UI refresh more often. Default is 10 seconds. - A
mask
helper has been added to the docs: https://viseron.netlify.app/components-explorer/components/mog2#mask
This makes it a bit clearer how to configure them until its possible to do it from the frontend directly. ffmpeg
has a new config optionraw_command
that makes it possible to specify an FFmpeg command that will be used directly.
Great if you want to test out some specific command that is hard to accomplish using the other available options.
There are a number of things to keep in mind tho, so if you are going to use it, make sure to read the docs thoroughly.
What's Changed
- Developer Experience by @roflcoopter in #545
- add initial developer documentation by @roflcoopter in #565
- add frontend proxy docs by @roflcoopter in #572
- add CodeProject.AI component and ALPR by @roflcoopter in #577
- add a simple mask helper to the docs by @roflcoopter in #578
- show min/max list length in config docs page by @roflcoopter in #579
- fix ffmpeg crash when running without substream by @roflcoopter in #580
- add recommended vscode extensions by @roflcoopter in #581
- resize using INTER_AREA instead of INTER_CUBIC by @roflcoopter in #582
- small updates to the docs by @roflcoopter in #593
- include yolov7 model in rpi3/armv7 image by @roflcoopter in #594
- update intel drivers and opencl by @roflcoopter in #596
- run gstreamer using python-gst by @roflcoopter in #608
- improve logging for pcie startup scripts by @roflcoopter in #633
- allow audio codec to be null by @roflcoopter in #634
- extract only the necessarry information from ffprobe by @roflcoopter in #635
- install gst/gi in ci by @roflcoopter in #637
- switch back to @jy95/material-ui-image by @roflcoopter in #638
- fix recorder audio codec not being set by @roflcoopter in #639
- add ffmpeg raw_command option by @roflcoopter in #641
- set max number of threads in data_stream by @roflcoopter in #642
- add new config option for still image by @roflcoopter in #643
- Feature/devcontainer improvements by @roflcoopter in #644
Full Changelog: v2.2.0...v2.3.0
v2.2.0 - Authentication
This release contains a lot of tweaks and fixes as well as some cool new features!
Authentication
The biggest change in this release is the addition of authentication for the frontend/API.
It is disabled by default but can be enabled by adding auth
to your webserver
config.
webserver:
auth:
When you first enable authentication you will be greeted with an onboarding page which allows you to create your first user.
At the moment you can only create this first user. Complete user handling is planned for the next release.
Enabling authentication protects all resources, including streams and videos, so if you are consuming these directly through Viserons API from another tool you will have some issues. I will make sure to properly implement and document a good way of accessing the API and resources from third-party tools even with auth enabled in a future release.
Things that needs to be added before i consider this feature done:
- Long lived access tokens for third party consumers of the API
- Create more users
- Delete/update users
- IP bans for failed login attempts
Failed cameras
Cameras that are unavailable during startup will now properly retry setup with automatic back-off.
Any camera that cant be successfully setup will be displayed in the frontend, displaying the error:
The red border represents failed cameras, and the orange border represents cameras that are actively retrying setup.
A bonus feature here is that the recordings for the cameras are still available for viewing in the frontend, neat right?!
General fixes
- FFmpeg upgraded to 5.1.2 with improved hardware acceleration for RPi4
- H265 fix for
gstreamer
- Audio is transcoded to
aac
by default if the original codec (pcm_alaw
,pcm_mulaw
) is not supported in.mp4
files.
Previously recordings would be stored in.mkv
files instead but that proved to be confusing. - Changed how
dlib
andsklearn
is installed which should solve a lot of issues with this component on thejetson-nano
andaarch64
image
What's Changed
- set correct parsing element from predefined map by @roflcoopter in #501
- transcode audio to aac instead of changing to mkv by @roflcoopter in #503
- Frontend authentication by @roflcoopter in #469
- bcrypt wheel fix and sklearn from pip by @roflcoopter in #507
- Feature/wheel improvements by @roflcoopter in #509
- Feature/ffmpeg 5.1.2 by @roflcoopter in #511
- ffmpeg stimeout > timeout for rtsp by @roflcoopter in #512
- pin dlib==19.22 to fix segfault crash by @roflcoopter in #516
- Feature/authentication tests by @roflcoopter in #521
- redirect to homepage when onboarding completed by @roflcoopter in #522
- add raw_pipeline option to gstreamer component by @roflcoopter in #525
- ffmpeg_loglevel option for recorder by @roflcoopter in #526
- change generation of segment script by @roflcoopter in #528
- raise DomainNotReady on FFProbe error/timeout by @roflcoopter in #529
- Show failed cameras in the frontend by @roflcoopter in #532
- Reduce bundle size by @roflcoopter in #533
- properly navigate to login/onboarding by @roflcoopter in #534
- v2.2.0 by @roflcoopter in #550
Full Changelog: v2.1.1...v2.2.0
v2.2.0b1 - Authentication
This release contains a lot of tweaks and fixes as well as some cool new features!
Authentication
The biggest change in this release is the addition of authentication for the frontend/API.
It is disabled by default but can be enabled by adding auth
to your webserver
config.
webserver:
auth:
When you first enable authentication you will be greeted with an onboarding page which allows you to create your first user.
At the moment you can only create this first user. Complete user handling is planned for the next release.
Enabling authentication protects all resources, including streams and videos, so if you are consuming these directly through Viserons API from another tool you will have some issues. I will make sure to properly implement and document a good way of accessing the API and resources from third-party tools even with auth enabled in a future release.
Things that needs to be added before i consider this feature done:
- Long lived access tokens for third party consumers of the API
- Create more users
- Delete/update users
- IP bans for failed login attempts
Failed cameras
Cameras that are unavailable during startup will now properly retry setup with automatic back-off.
Any camera that cant be successfully setup will be displayed in the frontend, displaying the error:
The red border represents failed cameras, and the orange border represents cameras that are actively retrying setup.
A bonus feature here is that the recordings for the cameras are still available for viewing in the frontend, neat right?!
General fixes
- FFmpeg upgraded to 5.1.2 with improved hardware acceleration for RPi4
- H265 fix for
gstreamer
- Audio is transcoded to
aac
by default if the original codec (pcm_alaw
,pcm_mulaw
) is not supported in.mp4
files.
Previously recordings would be stored in.mkv
files instead but that proved to be confusing. - Changed how
dlib
andsklearn
is installed which should solve a lot of issues with this component on thejetson-nano
andaarch64
image
What's Changed
- set correct parsing element from predefined map by @roflcoopter in #501
- transcode audio to aac instead of changing to mkv by @roflcoopter in #503
- Frontend authentication by @roflcoopter in #469
- bcrypt wheel fix and sklearn from pip by @roflcoopter in #507
- Feature/wheel improvements by @roflcoopter in #509
- Feature/ffmpeg 5.1.2 by @roflcoopter in #511
- ffmpeg stimeout > timeout for rtsp by @roflcoopter in #512
- pin dlib==19.22 to fix segfault crash by @roflcoopter in #516
- Feature/authentication tests by @roflcoopter in #521
- redirect to homepage when onboarding completed by @roflcoopter in #522
- add raw_pipeline option to gstreamer component by @roflcoopter in #525
- ffmpeg_loglevel option for recorder by @roflcoopter in #526
- change generation of segment script by @roflcoopter in #528
- raise DomainNotReady on FFProbe error/timeout by @roflcoopter in #529
- Show failed cameras in the frontend by @roflcoopter in #532
- Reduce bundle size by @roflcoopter in #533
- properly navigate to login/onboarding by @roflcoopter in #534
Full Changelog: v2.1.1...v2.2.0b1