Beta docs for this release: https://deploy-preview-6262--frigate-docs.netlify.app
Major Changes For 0.13.0
Breaking Changes
- Default values have been changed for motion detection. If you have specific values set in your config, it is recommended to remove them and re-calibrate as necessary.
- Changes have been made to the DB schema, downgrading to 0.12 will require restoring from a backup or deleting the DB and existing recordings / snapshots
- New location for
frigate.db
: Due to the support for network shares in HA OS and the popularity of storing recordings on a NAS in general, the database has a new default location of/config/frigate.db
. This change is going to be done for existing users too, so frigate will automatically move the db for you.-
For Frigate Addon Users:
The migration is handled automatically and no action is required from the user. -
For Docker Container Users:
The migration is handled for you, but you must make sure that the docker CLI or docker-compose binds the entire/config
directory and not just the/config/config.yml
file.For example, if your current volume mapping is
- /host/path/config_folder/config.yml:/config/config.yml
it should now be- /host/path/config_folder/:/config/
-
- The previously deprecated
record -> retain_days
config has been removed, this should be migrated torecord -> retain -> days
if you have not already. - HomeAssistant Integration 5.0 beta is required for the new features introduced in this release.
- TensorRT has been updated and the model generation has been refactored. New models will need to be generated for 0.13 and have a new path, check the detector docs for more info.
- TensorRT now requires Nvidia Driver Version 530+
Frigate+
False positive submissions
You can now submit false positive detections to Frigate+ for training feedback. Note that you will still need to login to your Frigate+ account and verify the images to ensure all relevant objects are labeled before the image will be used during training. Confirming the object is a true positive will also upload the image.
Models
Frigate+ models are almost ready for launch, and this release has support for automatically downloading from Frigate+. The model and related information are stored at /config/model_cache
. Once Frigate+ models are launched, you will be able to use the model id in your config.
model:
path: plus://e63b7345cc83a84ed79dedfc99c16616
Community Supported Boards
In version 0.12 Frigate gained support for Intel iGPUs via OpenVINO and for Nvidia GPUs, this was a great step forward for compatibility and for more users being able to use Frigate effectively. There are many other devices, including dedicated SBCs (Small Board Computers), that Frigate could support but the maintainers do not have the time or hardware to support.
The community supported boards framework will allow community members who want to contribute to create and manage support for a particular board. This will allow Frigate to support more devices while allowing the maintainers to focus on improving the core of Frigate.
Nvidia Jetson Support
@madsciencetist is the first to contribute a community supported board build by adding support for Jetson 4.6 and Jetson 5 devices!
More information can be found in the detector docs on how to set this up.
Object Tracking & Motion Detection
There have been many improvements to object tracking and motion detection which make Frigate more efficient and can reduce false positives.
New Object Tracker
Frigate now uses Norfair for object tracking, this means that object attributes like size, width/height ratio, and position are used to intelligently track objects. ID swapping between tracked objects is greatly reduced in situations where a car in the driveway was confused with a car passing in the street.
Improved Motion Detection
Frigate's motion detection is now more efficient. Motion detection will also re-calibrate for flashes like lightning or when the camera switches from color to IR mode or it is moved via PTZ. This reduces CPU usage during these changes and reduces false positives caused by excessive motion.
Minimum Time For Zone Presence
Frigate now has a configurable field for the minimum amount of time an object needs to be in a zone before it is considered in a zone. For example, currently in Frigate if you have a front_yard zone and someone is walking by and briefly steps into the front yard Frigate would create an event for this. However, you may prefer for events to only be created if a person is in the front yard for multiple frames before creating an event.
zones:
my_zone:
inertia: 3 # <- 3 consecutive frames needed to consider object in zone
coordinates: ...
Recordings Improvements
There have been a number of improvements to the management of recordings
Recordings Exporting
Frigate now supports exporting recordings in standard format or as a time-lapse. Exported recordings are stored in /media/frigate/exports
and are downloadable from the UI.
Recordings Timeline Metadata
Frigate now saves metadata for key moments in an event such as when the tracked object is detected, enters or exits zone, becomes active / stationary, and leaves. This metadata is used to overlay on top of the recordings so it is easy to see what was detected and where. Note that the timing of the bounding boxes will likely be slightly off because it is based on the detect stream, but overlayed on the record stream. The annotation_offset
value in the config can be used to adjust for any differences.
Internal Processing Improvements
There have been many improvements to the recordings management process to make it faster and more efficient:
- Recordings maintainer now lives in a dedicated process
- Recordings maintenance is now fully asynchronous
- Database writes are now much more efficient
- Record config can now have
sync_on_startup
enabled which will check for recordings in the db that are not on the disk and delete them
Audio Events
Frigate now supports audio events via YamNet. Over 600 labels are included so there are too many to list here, but Frigate can listen to a cameras audio feed to create events and update MQTT when speech, yell, fire alarm, dog bark, etc. are heard. Version 5.0 of the HomeAssistant integration also supports sensors for these audio detections so automations can be fired when certain types of audio are detected.
Manual Events API
Frigate now supports creating events manually via the API. This means that custom events can be created, for example an event when the doorbell is pressed or a sensor is tripped. The API allows full control of event length, if recordings should be saved, and much more. The request and response can be seen in the documentation.
Curl Example:
curl -X POST "http://<frigate_ip>:5000/api/events/front_doorbell_cam/doorbell/create" -H Content-Type:\ application/json
PTZ Control
Frigate now supports PTZ cameras.
Basic PTZ Autotracking
https://deploy-preview-6262--frigate-docs.netlify.app/configuration/autotracking
Along with Frigate's improved tracking algorithm, basic autotracking is now supported. Not all PTZ cameras will support this as relative movement is required (see the docs for more details).
PTZ Controls In The WebUI
Frigate also supports controlling PTZ cameras in the WebUI and via the Home Assistant Integration.
Other Notable Changes:
- The ordering of birdseye cameras is now supported
- Birdseye now supports autolayout meaning that a grid system is no longer used. Panoramic and portrait cameras now take up a proportional amount of space to better use the canvas to show these cameras.
- Camera zone & mask editor now supports saving directly without the need to copy / paste
- Deepstack/CodeProjectAI is now supported as a detector.
Images
ghcr.io/blakeblackshear/frigate:0.13.0-beta1
ghcr.io/blakeblackshear/frigate:0.13.0-beta1-standard-arm64
ghcr.io/blakeblackshear/frigate:0.13.0-beta1-tensorrt
ghcr.io/blakeblackshear/frigate:0.13.0-beta1-tensorrt-jp4
ghcr.io/blakeblackshear/frigate:0.13.0-beta1-tensorrt-jp5
What's Changed
- Remove arm32 by @blakeblackshear in #5935
- Remove deprecated retain_days config by @NickM-27 in #5952
- docker-compose.yml: remove
:ro
forconfig.yml
by @kevin-david in #6086 - update deps by @blakeblackshear in #6093
- Bump docker/build-push-action from 3 to 4 by @dependabot in #5319
- update to 8.3.x by @blakeblackshear in #6100
- Migrate away from deprecated np.float by @mweinelt in #5898
- Auto approve dependabot PRs by @felipecrs in #5147
- update python deps by @blakeblackshear in #6101
- Edit dsize order by @tom2002965 in #6172
- Use browser timezone if not specified in config by @lucasnz in #6205
- Metadata Timeline by @NickM-27 in #6194
- Migrate default database path from
/media/frigate
to/config
by @felipecrs in #5219 - Fix substitution change on yaml config file by @NickM-27 in #6212
- Fix timeline event overlay when recordings mode is not all by @NickM-27 in #6215
- Use correct method for retrieving current unix time by @NickM-27 in #6218
- Bump actions/setup-python from 4.5.0 to 4.6.0 by @dependabot in #6192
- False positives by @blakeblackshear in #6217
- Support Controlling PTZ Cameras Via WebUI by @NickM-27 in #4715
- dependency updates by @blakeblackshear in #6246
- Move recording management to separate process by @NickM-27 in #6248
- Add option to have cameras sorted inside the Birdseye stream by @alinbalutoiu in #5450
- Record annotation offset by @NickM-27 in #6288
- Show other system processes in system page by @NickM-27 in #6276
- Cleanup timeline entries when relevant recording segments are removed by @NickM-27 in #6319
- Refactor events to be more generic by @NickM-27 in #6320
- add plus integration for models by @blakeblackshear in #6328
- Bug fixes by @blakeblackshear in #6332
- Replace subprocess usage with os module for better performance and maintainability by @skrashevich in #6298
- Refactor Process Stats and Bugfixes by @skrashevich in #6344
- Increase maximum event sub_label length to 100 characters by @skrashevich in #6350
- Hide PTZ Controls in Birdseye when no cameras support it by @skrashevich in #6353
- Add icon to explain in more detail the system stats / storage info by @NickM-27 in #6358
- Implement NVML for NVIDIA GPU Stats by @skrashevich in #6359
- Do not show the loader during recordings api call by @petslane in #6366
- Fix site.webmanifest referencing images that don't exist when built by @Steve-Tech in #6304
- Add Deepstack/CodeProject-AI.Server detector plugin by @skrashevich in #6143
- Timeline UI optimizations by @NickM-27 in #6367
- Add Go2RTC Version to System Dashboard by @skrashevich in #6390
- Upgrade deps by @blakeblackshear in #6395
- Bugfix: improve error handling in Deepstack detector by @skrashevich in #6463
- Add cmdline info to System page's cameras-ffmpeg table by @skrashevich in #6430
- Dynamic Image Size Support for DeepStack Detector by @skrashevich in #6429
- Don't fail if camera does not support presets by @NickM-27 in #6497
- add ffmpeg bandwidth stats by @jarzebski in #6492
- Add go2rtc & remote detectors network bandwidth usage to System table by @skrashevich in #6526
- Ability to manually create events through the API by @NickM-27 in #3184
- Fix breakages by manual_event_api branch by @NickM-27 in #6542
- Fix false positives by @NickM-27 in #6544
- fix coral libs by @blakeblackshear in #6558
- Update go2rtc to 1.5.0 by @NickM-27 in #5814
- Add handling for non-existent or empty model file paths by @skrashevich in #6525
- documentation fix: go2rtc 1.5.0 forgotten changes by @skrashevich in #6561
- Fix pydantic by @NickM-27 in #6584
- deepstack: pass api key in request by @mweinelt in #6579
- Add isort and ruff linter by @mweinelt in #6575
- Update docs link by @themactep in #6657
- Improve tracking by @blakeblackshear in #6516
- Remove ffmpeg banner by @NickM-27 in #6600
- Update deps by @blakeblackshear in #6669
- Bump actions/setup-python from 4.6.0 to 4.6.1 by @dependabot in #6609
- fix: don't assume build platform is amd64 by @no2chem in #6709
- Add API and WebUI to export recordings by @NickM-27 in #6550
- Fix bug introduced in new linter by @NickM-27 in #6754
- Bump docker/login-action from 2.1.0 to 2.2.0 by @dependabot in #6740
- DB Optimizations by @NickM-27 in #6712
- Add function to get physical interfaces for bandwidth calculation by @skrashevich in #6618
- Birdseye Autolayout by @NickM-27 in #6734
- Ability to configure min frames for zone presence by @NickM-27 in #6680
- Enhancement: Add Date and Time Inputs to Export Component with Time Validation by @skrashevich in #6750
- Optimization of Sync Records: Implementing Pagination and Temporary Table by @skrashevich in #6585
- Option to enable / disable stats that require external processes by @NickM-27 in #6615
- Improve motion detection and region selection by @blakeblackshear in #6741
- Fix birdseye optimistic approach by @NickM-27 in #6764
- [Feature] Add timepicker to calendar by @sinamics in #5183
- Refactor storage stats calculation to use powers of 2 for more accurate values by @skrashevich in #6765
- Add FAQ about MQTT not connecting by @NicholasFlamy in #6554
- Various Bug Fixes by @NickM-27 in #6768
- Fix bug in intersection logic by @NickM-27 in #6780
- Optimize Birdseye layout for portrait cameras by @NickM-27 in #6779
- Typo fixed in hardware.md by @asztalosdani in #6788
- Bugfix: Refactor date and time initialization in Export.jsx by @skrashevich in #6794
- Fix stream name not being used for MSE by @NickM-27 in #6796
- Bugfix: timestamp value read from .vacuum by @skrashevich in #6800
- Fix max_frames, improve stationary objects in masked areas by @blakeblackshear in #6815
- Rewrite birdseye auto layout by @NickM-27 in #6818
- Optimize stacked recordings by @NickM-27 in #6809
- Add docs for annotation offset by @NickM-27 in #6824
- Don't fail to save segment when cv2 fails by @NickM-27 in #6823
- Label attributes by @blakeblackshear in #6829
- Fix video properties dict getting overwritten by @NickM-27 in #6830
- use clahe for contrast improvement by @blakeblackshear in #6835
- reduce grid size for contrast improvement by @blakeblackshear in #6870
- Performance: multiprocessing improvement by @skrashevich in #6936
- fix tooltip not showing if too far left by @spacebares in #6909
- Load labels dynamically for event filters by @NickM-27 in #6896
- actually keep track of skipped frames by @ccutrer in #6889
- optimize frame-per-second calculations by @ccutrer in #6887
- Remove legacy recordings file cleanup by @NickM-27 in #6947
- configurable ffmpeg timeout by @spacebares in #6897
- Show object attributes when hovering or tapping timeline bounding box by @NickM-27 in #6879
- Apply zone filter before inertia by @NickM-27 in #6854
- use a different method for blur and contrast to reduce CPU by @blakeblackshear in #6940
- Integrate ccache into libusb and nginx build scripts for improved build speed by @skrashevich in #6886
- Fix Bad Resize For Camera Snapshot by @NickM-27 in #6797
- Fix bad check on np.array by @NickM-27 in #6968
- Update docs to reflect HA addon storage feature by @NickM-27 in #6681
- update deps by @blakeblackshear in #6973
- fixed TimeAgo abbreviation by @sinamics in #6977
- Audio events by @NickM-27 in #6848
- Fix small audio events details by @NickM-27 in #6978
- Fix audio events not being ended by @NickM-27 in #6981
- Scale birdseye layout up to max size after it has been calculated by @NickM-27 in #6825
- Add designator when events are from the api by @NickM-27 in #6997
- UI: add audio process stats to System page by @skrashevich in #6993
- UI: display only enabled cameras on System page by @skrashevich in #6992
- Fix: audio events end error handling by @skrashevich in #6984
- Fix min region size not being divisible by 4 by @NickM-27 in #7040
- Use pre capture for custom events by @NickM-27 in #7038
- Force birdseye cameras into standard aspect ratios by @NickM-27 in #7026
- Reduce framerate before downscaling by @madsciencetist in #7022
- Check ffmpeg version instead of checking for presence of BTBN_PATH by @madsciencetist in #7023
- Ptz cleanup by @NickM-27 in #6999
- Performance: multiprocessing improvement: step 2 by @skrashevich in #6986
- Update reolink docs to make go2rtc config more clear by @NickM-27 in #6985
- reduce contention on frame_queue by @ccutrer in #6890
- Fix go2rtc getting env var by @NickM-27 in #7052
- Cleanup and organize utils by @NickM-27 in #7033
- Bugfix: SqliteQueueDatabase instead of SqliteDatabase and retry_interval for fetching latest frame in http.py by @skrashevich in #7059
- Bump NGINX version to 1.25.1, VOD module version to 1.31, secure token module version to 1.5, and RTMP module version to 1.2.2 by @skrashevich in #7058
- Feature: camera debug/config enhancements by @skrashevich in #6920
- Bugfix: race condition by @skrashevich in #7053
- Upgrade TensorRT to 8.5.3 by @NateMeyer in #7006
- Fix incorrect http resopnses by @NickM-27 in #7066
- Fix webUI ptz presets by @NickM-27 in #7065
- UI Improvement: Full-width birdseye (if no PTZ cameras) by @skrashevich in #6817
- Hide birdseye width button on mobile devices by @NickM-27 in #7077
- Fix queues by @NickM-27 in #7087
- Update ha_network_storage.md to make it clear which config file by @wire67 in #7084
- Basic PTZ object autotracking functionality by @hawkeye217 in #6913
- Only run audio detection when audio is above noise threshold by @NickM-27 in #7078
- Autotracking fixes by @hawkeye217 in #7096
- fix edgetpu device type "None" not working by @Links2004 in #7097
- Attribute scores by @blakeblackshear in #7100
- UI Fix: don't show zones icon in Events page if no zones configured by @skrashevich in #7120
- Improve date and time formatting with fallback for unsupported Intl.DateTimeFormat features by @sinamics in #7099
- Autotracking optimizations by @hawkeye217 in #7109
- Autotracking: reset motion estimator by @hawkeye217 in #7129
- go2rtc v1.6.0 by @skrashevich in #7122
- Expose dBFS when doing audio analysis by @jpverdejo in #6979
- WebUI: Show label & sub labels values next to the score by @skrashevich in #7121
- Sub label api score by @NickM-27 in #7113
- Refactor ff queue size by @NickM-27 in #7116
- Fix Birdseye Width & PTZ control panel by @NickM-27 in #7118
- Fix: Add limit to event query by @skrashevich in #7108
- Feature: automatic camera resolution configuration by @skrashevich in #6810
- Fix incorrect import in Config by @NickM-27 in #7157
- Autotracker: minor efficiency tweaks by @hawkeye217 in #7163
- Add check for valid label index for object detection (#7149) by @NateMeyer in #7164
- Save average dBFS and retain segment with dBFS in motion mode by @NickM-27 in #7158
- Publish audio detections by @NickM-27 in #7159
- Fix recording dBFS logic by @NickM-27 in #7165
- Add option for enabling sync recordings by @NickM-27 in #7169
- Show / Download Exported recordings UI by @NickM-27 in #7171
- Remove faster_fifo by @NickM-27 in #7181
- Allow customization of tooltip capitalization by @NickM-27 in #7172
- Add tests for recordings retention and fix bug by @NickM-27 in #7183
- Save audio scores and add audio filter config by @NickM-27 in #7185
- Don't show frigate+ button for audio / custom events by @NickM-27 in #7203
- Set DB timeout based on number of cameras by @NickM-27 in #7219
- Set supported ptz features in init to not fail when camera has an error by @NickM-27 in #7228
- db improvements by @NickM-27 in #7227
- Show status when mask is saved by @NickM-27 in #7212
- scroll camera list in camera/recordings route by @spacebares in #7195
- Update go2rtc to version 1.6.2 by @skrashevich in #7250
- Update TensorRT driver requirement documentation (>=530) by @JeffWDH in #7221
- Update reolink config by @NickM-27 in #7253
- fix: allow env var templating for go2rtc rtsp creds by @tnyeanderson in #6449
- Resolve conflict in reolink docs by @xconverge in #7264
- Community Supported Boards Framework by @NickM-27 in #7114
- Fix build by @NickM-27 in #7266
- Nvidia Jetson ffmpeg + TensorRT support by @madsciencetist in #6458
- Refactor Audio Events To Use stdout Pipe by @NickM-27 in #7291
- Refactor Recordings by @NickM-27 in #7275
- Fix ffmpeg preset typo by @NickM-27 in #7293
- Build CI images in parallel by @madsciencetist in #7296
- Fix CI by @madsciencetist in #7303
- Revert the switch to zstd docker layer compression by @madsciencetist in #7308
- Batch delete recordings for removed cameras as well by @NickM-27 in #7302
- Update OpenVINO 2022.3.1 by @NateMeyer in #7319
- Dockerfile: replacing wget with native ADD by @skrashevich in #7321
- Accept floats for export when used directly with event start / end time by @NickM-27 in #7314
- Fix frame not in cache error by @NickM-27 in #7313
- Reuse CACHE_DIR constant by @mweinelt in #7306
- Organize configuration sidebar by @NickM-27 in #7333
- Add support for stationary and active timeline entires by @NickM-27 in #7344
- Revert numpy upgrade by @madsciencetist in #7341
- Disambiguate 12h export filename timestamp by @madsciencetist in #7340
- Update web deps by @blakeblackshear in #7339
- Improve Storage Logs by @NickM-27 in #7338
- Improve debug logs for audio & ptz by @NickM-27 in #7387
- bugfix: date selection in events calendar by @skrashevich in #7374
- Revert numpy upgrade cont. by @madsciencetist in #7348
- Fix audio filter config by @NickM-27 in #7401
- Fix linter error by @NickM-27 in #7428
- Remove unused code by @jirasak-n in #7430
- Catch case where detected object has a height of 0 by @NickM-27 in #7425
- Fix typo in installation.md by @eltociear in #7463
- Catch websocket exception in output by @NickM-27 in #7525
- Clarify go2rtc requirement for ha integration by @NickM-27 in #7503
- Make clear only network storage is supported for addon by @NickM-27 in #7505
- clarify birdseye restream in docs by @spacebares in #7521
- Remove custom model example from basic coral docs by @NickM-27 in #7639
- AudioDetection: some improvements by @skrashevich in #7588
- Update libusb version to v1.0.26 by @skrashevich in #7585
- Update s6 overlay version to 3.1.5.0 by @skrashevich in #7584
- Update NGINX version to 1.25.2 by @skrashevich in #7583
- Clarify autotracking return_preset docs by @hawkeye217 in #7576
- Don't count in progress events as duplicates by @NickM-27 in #7568
- Show sub label in debug view when available by @NickM-27 in #7567
- WebUI: audio icons in MultiSelect component by @skrashevich in #7564
- Add link to audio classes by @anaisbetts in #7554
- Clarify tmpfs and shm in installation docs by @Redsandro in #7551
- Add default hass location for go2rtc config by @NickM-27 in #7549
- Catch broken pipe when sending to websocket by @NickM-27 in #7556
- Set commands before subscribing to messages by @NickM-27 in #7550
- Don't fail ptz if camera does not support relative zoom by @NickM-27 in #7542
- Add troubleshooting docs for recordings by @NickM-27 in #7381
- Run flask as multi threaded by @NickM-27 in #7648
- Improve error checking and handling for recordings export by @NickM-27 in #7647
- Upgrade deps by @NickM-27 in #7664
- Upgrade more deps by @NickM-27 in #7684
- Suggest object masks for stationary false positives by @flyize in #7685
- Bump actions/setup-python from 4.6.1 to 4.7.0 by @dependabot in #7156
- Bump actions/checkout from 3 to 4 by @dependabot in #7696
- more deps by @blakeblackshear in #7712
- Reduce database queries to necessary fields by @NickM-27 in #7751
- Update python deps by @NickM-27 in #7763
- Fix Python Dependabot by @NickM-27 in #7762
New Contributors
- @tom2002965 made their first contribution in #6172
- @lucasnz made their first contribution in #6205
- @alinbalutoiu made their first contribution in #5450
- @petslane made their first contribution in #6366
- @Steve-Tech made their first contribution in #6304
- @jarzebski made their first contribution in #6492
- @themactep made their first contribution in #6657
- @NicholasFlamy made their first contribution in #6554
- @asztalosdani made their first contribution in #6788
- @ccutrer made their first contribution in #6889
- @madsciencetist made their first contribution in #7022
- @wire67 made their first contribution in #7084
- @Links2004 made their first contribution in #7097
- @jpverdejo made their first contribution in #6979
- @JeffWDH made their first contribution in #7221
- @tnyeanderson made their first contribution in #6449
- @jirasak-n made their first contribution in #7430
- @eltociear made their first contribution in #7463
- @anaisbetts made their first contribution in #7554
- @Redsandro made their first contribution in #7551
- @flyize made their first contribution in #7685
Full Changelog: v0.12.1...v0.13.0-beta1