Major Changes for 0.12.0
❗❗Notice❗❗
I want to recognize @NickM-27 for all the contributions he made on this release and all the support he helps provide in the issues. If you have been considering sponsoring this project with either a one time contribution or a recurring contribution, I would request that you do so at his sponsors page.
Link to updated docs: https://deploy-preview-4055--frigate-docs.netlify.app/
Changes Since Beta 4
- Fix early exit of Frigate container on restart and handle process exits more gracefully
- Improve handling of embedded go2rtc config
- Attempt to automatically populate WebRTC candidates for addon installs
- Enable variable substitution for streams within the go2rtc config for env vars beginning with
FRIGATE_
- Use configured live view stream
BREAKING CHANGES
- If using the Frigate-HomeAssistant Integration it will need to be updated to 4.0.0 beta01 to avoid breaking changes with Frigate 0.12
- Changes have been made to the database, a backup of the database will need to be made before updating if you want to roll-back.
- Some deployment approaches are overwriting the PATH environment value to an old value. If you see errors like
./run: line 7: exec: nginx: not found
, then you need to stop overriding your PATH. This happens with both Proxmox LXC and Portainer (#3223 the database will need to be deleted to roll-back successfully. - More config validation checks have been added, it is possible that Frigate will fail to start due to an error that has been caught, the error will need to be fixed before frigate can start.
- RTMP is now disabled by default and the role is not automatically added. It is highly recommend to move to the new RTSP streams via the bundled go2rtc.
- Changes have been made to the way recordings segments are stored, external scripts which access the recordings file structure directly may be broken.
Retention limited by available storage
Frigate now limits its recordings to available storage, if the storage for recordings gets below 1 hour left then Frigate will delete the oldest recording segments to make room for newer ones. Frigate will also not fail if there is no space to save recordings.
go2rtc restreaming
go2rtc has been bundled inside Frigate. The configuration can be set directly inside Frigate's config file nested under the go2rtc
section.
Due to many issues with RTMP, it is now deprecated in favor of using the bundled go2rtc to provide an RTSP stream. Streams configured in go2rtc can also be used by Frigate to reduce connections to the camera, see the restream docs for more info.
Birdseye restreaming is also now supported at rtsp://frigate_ip:8554/birdseye
NOTE: Port 8554
will need to be mapped in the docker run or docker compose file for the restream to be accessed outside the container.
New live stream options
The bundled go2rtc also enables new MSE
and WebRTC
live view options in the frontend which enable low-latency full-framerate live views that support audio.
NOTES:
- MSE is not supported on iPhones but is supported on all other devices.
- WebRTC will likely require additional setup, see the live view docs for more info
The live view options are set in the Frigate WebUI for each camera individually.
New detector types
Frigate now supports new detector types along with the Google Coral TPU.
OpenVINO
The OpenVINO detector type runs an OpenVINO IR model on Intel CPU, GPU and VPU hardware. OpenVINO is supported on 6th Gen Intel platforms (Skylake) and newer. A supported Intel platform is required to use the GPU device with OpenVINO. The MYRIAD device may be run on any platform, including Arm devices. For detailed system requirements, see OpenVINO System Requirements
TensorRT
NVidia GPUs may be used for object detection using the TensorRT libraries. Due to the size of the additional libraries, this detector is only provided in images with the -tensorrt tag suffix. The TensortRT detector is able to run on x86 hosts that have an Nvidia GPU which supports the 11.x series of CUDA libraries. The minimum driver version on the host system must be >=450.80.02. Also the GPU must support a Compute Capability of 5.0 or greater. This generally correlates to a Maxwell-era GPU or newer, check the TensorRT docs for more info.
NOTE: The link in the docs is for the final release location, for the beta the script is located at https://raw.githubusercontent.com/blakeblackshear/frigate/dev/docker/tensorrt_models.sh
New system page
The Debug
page has been renamed to System
. It now includes much more information and links to easily get vainfo
and ffprobe
data.
The GPUs section will show each GPU based on the hwaccel args, depending on the type of GPU different information is supported. For example Nvidia GPUs will have the name while others will be generic, also intel does not support memory usage. There is also a VAINFO
button which will make it easier to diagnose hwaccel issues and verify that the hwaccel driver is being used correctly.
Each camera will have their own process CPU & memory usage so it will be easier to see which process is using those resources. There is also an FFPROBE
button which will be helpful to understand what each stream is presenting and make it easier to include that in support issues.
The debug config has also been removed, the config can be copied using the config page in the WebUI.
New storage page
Frigate WebUI now has a built in storage page which shows the general usage for both storage and memory. It also shows a per-camera storage usage and stream bandwidth. This should make it a lot easier to have a general idea how much storage is being used by each camera.
New logs page
Frigate WebUI now has built in logs, this will make copying and viewing logs much easier. Currently the logs are static meaning the page must be refreshed to view new logs.
New config editor
Frigate WebUI now has a built in config editor with syntax highlighting and schema validation. This means that the config will be validated before it can be saved which will make yaml config much easier to manage.
NOTE: The previous docker-compose or docker CLI may have had the /config.yml set to :ro
or read-only. That will need to be removed for the config editor to be able to save the new file.
MQTT is now optional
Frigate no longer requires MQTT to function, MQTT is also setup asynchronously so errors will be more clear and frigate won't stop when mqtt is enabled but not setup correctly.
NOTE: MQTT is still required for the Frigate-HomeAssistant Integration
No changes are needed for existing users.
FFMpeg presets
FFMPEG presets for common configurations are now added, making the config cleaner and allowing the underlying args to be changed between releases without being a breaking change. It is highly recommended to update the configuration to use these presets.
See https://deploy-preview-4055--frigate-docs.netlify.app/configuration/ffmpeg_presets for more info on how these should be used.
Example: Enabling Audio In Recordings
before:
output_args:
record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v copy -c:a aac
after:
output_args:
record: preset-record-generic-audio-aac
This also enables presets for hardware acceleration which will be used to further reduce CPU usage by using the GPU to optimize scaling and other workloads.
Improved events filters
- Multi Select Filters: Each filter now supports multi select so multiple cameras, labels, etc. can be viewed at the same time.
- Favorited Event Filter: Events can now be filtered to only show favorited events along with the existing filters.
Recordings updates
Recording segments are now stored in UTC to avoid issues with DST. In order to avoid a breaking change, the path of the stored segments has changed from /media/frigate/recordings/%Y-%m/%d/%H-%s.mp4
to /media/frigate/recordings/%Y-%m-%d/%H-%s.mp4
.
Recordings in the frontend are now shown in the timezone of the device viewing frigate, so the timezone set on the server running frigate is irrelevant.
No changes are needed for existing users.
What's Changed
- Storage Based Retention by @NickM-27 in #3942
- Docs update: Update camera specific input_agrs for ESP32-cam using ESPHome by @MariusMueller in #4171
- Add go2rtc and add restream role / live source by @NickM-27 in #4082
- Catch case where segment is bad length by @NickM-27 in #4228
- Add option enabled for each camera in config by @banthungprong in #4162
- Adding clip duration to Events View by @banthungprong in #4133
- Bump @xmldom/xmldom from 0.7.5 to 0.7.8 in /web by @dependabot in #4230
- Bump vite from 2.8.6 to 2.9.13 in /web by @dependabot in #3885
- Support special characters in passwords, redacted logs & debug config by @NickM-27 in #4057
- Update docs to reflect recommended custom birdseye icon size by @Tuurkevg in #4065
- Object Detector Abstraction by @NateMeyer in #3656
- Update go2rtc to rc1 by @NickM-27 in #4252
- Update funding list and fix demo link by @blakeblackshear in #4258
- Support more special chars in camera passwords by @NateMeyer in #4259
- try a different approach for build_web by @blakeblackshear in #4260
- Configure Dependabot by @herostrat in #4271
- actions updates by @blakeblackshear in #4302
- Upgrade to latest docusaurus by @blakeblackshear in #4303
- Update web by @blakeblackshear in #4321
- More config checks by @NickM-27 in #4310
- Go2rtc update and MSE improvements by @NickM-27 in #4309
- Update mask editor to have instructions by @NickM-27 in #4324
- Update web deps by @blakeblackshear in #4383
- Revamped debug UI and add camera / process info, ffprobe copying by @NickM-27 in #4349
- Fix new lines for instructions by @NickM-27 in #4371
- Catch case where recording is not enabled by @NickM-27 in #4069
- Remove wheels from final container by @felipecrs in #4395
- Update go2rtc, simplify manual stream, and support audio for MSE & WebRTC by @NickM-27 in #4391
- Frontend fixes by @blakeblackshear in #4411
- Easy Python Updates by @herostrat in #4424
- Update cuvid docs with count param by @NickM-27 in #4436
- Fix mixed params for CPU / MEM debug by @NickM-27 in #4432
- Fix internal restream error and add docs for reducing camera connections by @NickM-27 in #4431
- Typing Part 3: events.py by @herostrat in #3352
- Use testing repo for hwaccel dependencies by @NickM-27 in #4368
- Improve the devcontainer experience by @felipecrs in #3492
- Refactor mqtt to handle reconnects and not cause frigate to stop. by @NickM-27 in #4440
- rename debug to system by @blakeblackshear in #4447
- Remove ffplay from docker image by @felipecrs in #4449
- Reduce amount layers of the docker image by @felipecrs in #4448
- Fix makefile by @blakeblackshear in #4491
- Abstract MQTT from communication and make mqtt optional by @NickM-27 in #4462
- update web deps by @blakeblackshear in #4498
- low risk updatea by @blakeblackshear in #4500
- fix image build by @blakeblackshear in #4503
- Fix stats prefix by @NickM-27 in #4505
- Remove topic prefix by @NickM-27 in #4515
- fix support for yuv models by @blakeblackshear in #4523
- Clean http password, clean path in debug config as well by @NickM-27 in #4519
- Fix recordings set name by @NickM-27 in #4543
- Add GPU stats to the /stats API and debug screen by @NickM-27 in #3931
- Replace green screen with error message and force camera_fps to 0 by @NickM-27 in #4544
- FEAT: Support for ffmpeg presets by @NickM-27 in #3840
- Fix gpu stats for ffmpeg presets by @NickM-27 in #4554
- FEAT: Storage API & Frontend by @NickM-27 in #3409
- Set User Agent for FFmpeg calls by @felipecrs in #4555
- Add OpenVino Detector by @NateMeyer in #3768
- Upgrade s6-overlay from 2.2.0.3 to 3.1.2.1 by @felipecrs in #4584
- Fix intel gpu stats by @NickM-27 in #4581
- Do not apply
-user_agent
forrtmp
streams by @felipecrs in #4596 - Set max height so vainfo doesn't overflow by @NickM-27 in #4598
- Update go2rtc version by @NickM-27 in #4616
- Add config editor to webUI by @NickM-27 in #4608
- Cleanup names in webUI by @NickM-27 in #4607
- Log all services to memory by @felipecrs in #4587
- Add example of environment_vars by @NickM-27 in #4634
- Fix end events for mqtt by @NickM-27 in #4647
- Fix ffprobe with special characters by @NickM-27 in #4646
- Logs in UI by @NickM-27 in #4562
- Restart record process if segments stop being written. by @NickM-27 in #4604
- Update method of acquiring signing keys by @NateMeyer in #4649
- Don't catch presets with segment check by @NickM-27 in #4653
- Use UTC for recordings by @NickM-27 in #4656
- UI Cleanup & Optimization by @NickM-27 in #4673
- FEAT: Filter Multi Select by @NickM-27 in #3367
- System page improvements by @NickM-27 in #4707
- Convert detectors to factory pattern, ability to set different model for each detector by @dennispg in #4635
- Add apache2 reverse proxy documentation by @blacknell in #4502
- Use presets by default by @felipecrs in #4597
- Optimize nginx & recordings by @NickM-27 in #4688
- Add note to docs about rpi kernel issue. by @NickM-27 in #4726
- Show All and Solo selection buttons for MultiSelect. by @spacebares in #4723
- Fix monaco editor issues by @NickM-27 in #4724
- Fix MSE Issues by @NickM-27 in #4725
- Folderize Docs: Each topic gets a folder by @herostrat in #4514
- update contributing docs by @blakeblackshear in #4727
- force upgrade certs by @blakeblackshear in #4728
- Update certs by @blakeblackshear in #4729
- Frontend Player Fixes by @NickM-27 in #4778
- Fix error when saving the config unsuccessfully by @NickM-27 in #4780
- Update Reolink docs by @NickM-27 in #4757
- Handle multi-word time zones by @singingtelegram in #4816
- Frontend deps by @blakeblackshear in #4824
- Fix config missing after leaving and coming back by @NickM-27 in #4825
- Nvidia TensorRT detector by @NateMeyer in #4718
- Add hardware accelerated scaling when using ffmpeg hwaccel presets by @NickM-27 in #4804
- Update max operations for stalebot by @NickM-27 in #4828
- easier python deps by @blakeblackshear in #4827
- Bump actions/setup-python from 4.3.0 to 4.4.0 by @dependabot in #4786
- Fix handling of timezones by @NickM-27 in #4831
- Add ability to restream birdseye by @NickM-27 in #4761
- Bump json5 from 2.2.1 to 2.2.2 in /docs by @dependabot in #4826
- [API] filter for favorite events by @spacebares in #4737
- Remove duplicate in docs by @tvdelgado in #4836
- set env vars needed for nvidia support by @blakeblackshear in #4837
New Contributors
- @MariusMueller made their first contribution in #4171
- @banthungprong made their first contribution in #4162
- @Tuurkevg made their first contribution in #4065
- @NateMeyer made their first contribution in #3656
- @dennispg made their first contribution in #4635
- @blacknell made their first contribution in #4502
- @spacebares made their first contribution in #4723
- @singingtelegram made their first contribution in #4816
- @tvdelgado made their first contribution in #4836
Full Changelog: v0.11.1...v0.12.0-beta5
Images:
ghcr.io/blakeblackshear/frigate:0.12.0-beta5
ghcr.io/blakeblackshear/frigate:0.12.0-beta5-tensorrt