* Restrict nginx to 4 processes if more are available
* Fix bash
* Different sed structure
* Limit ffmpeg thread counts for secondary ffmpeg processes
* Add up / down keyboard shortcut
* reload the window on 401
* backend apis for auth
* add login page
* re-enable web linter
* fix login page routing
* bypass csrf for internal auth endpoint
* disable healthcheck in devcontainer target
* include login page in vite build
* redirect to login page on 401
* implement config for users and settings
* implement JWT actual secret
* add brute force protection on login
* add support for redirecting from auth failures on api calls
* return location for redirect
* default cookie name should pass regex test
* set hash iterations to current OWASP recommendation
* move users to database instead of config
* config option to reset admin password on startup
* user management UI
* check for deleted user on refresh
* validate username and fixes
* remove password constraint
* cleanup
* fix user check on refresh
* web fixes
* implement auth via new external port
* use x-forwarded-for to rate limit login attempts by ip
* implement logout and profile
* fixes
* lint fixes
* add support for user passthru from upstream proxies
* add support for specifying a logout url
* add documentation
* Update docs/docs/configuration/authentication.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/authentication.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update reference config to reflect new config
* Migrate 0.13 config to match 0.14 config style
* Overwrite existing config
* Adjust config schema to remove events required zones and include reviews
* Update object config to check correct required zones config
* Refactor reviews to remove motion and only create review segments in expected circumstances
* Cleanup
* Formatting
* Fix update ordering
* Update pydantic
* Remove rtmp references as part of migration
* Catch file not found for alert frame
* Use skeleton for gif loading
* cache gifs as well
* Show skeleton when switching previews
* Fix touch controls for mobile
* Fix android mobile scrub logic
* Cleanup
* Write preview frames as webp instead of jpg and ensure webp are cached in nginx
* Support preview player that shows current hour images
* Update to get preview player working
* Use timestamp based recordings check instead of calendar
* Start motion review from current time
* Adjust layout
* Use preview players for previews
* remove vite
* Cleanup
* Fix up the layout
Adds a direct dependency on markupsafe, instead of relying on the
implicit dependency via Flask.
This is in preparation of Flask 3.0 support, which will drop compat for
importing escape indirectly.
* Use zmq for inter process communication
* Use localhost for reply and request
* Use pyobj instead of json and Need to use separate requestors for each audio listener
* Cleanup port defining
* ROCm AMD/GPU based build and detector, WIP
* detectors/rocm: separate yolov8 postprocessing into own function; fix box scaling; use cv2.dnn.blobForImage for preprocessing; assert on required model parameters
* AMD/ROCm: add couple of more ultralytics models; comments
* docker/rocm: make imported model files readable by all
* docker/rocm: readme about running on AMD GPUs
* docker/rocm: updated README
* docker/rocm: updated README
* docker/rocm: updated README
* detectors/rocm: separated preprocessing functions into yolo_utils.py
* detector/plugins: added onnx cpu plugin
* docker/rocm: updated container with limite label sets
* example detectors view
* docker/rocm: updated README.md
* docker/rocm: update README.md
* docker/rocm: do not set HSA_OVERRIDE_GFX_VERSION at all for the general version as the empty value broke rocm
* detectors: simplified/optimized yolov8_postprocess
* detector/yolo_utils: indentation, remove unused variable
* detectors/rocm: default option to conserve cpu usage at the expense of latency
* detectors/yolo_utils: use nms to prefilter overlapping boxes if too many detected
* detectors/edgetpu_tfl: add support for yolov8
* util/download_models: script to download yolov8 model files
* docker/main: add download-models overlay into s6 startup
* detectors/rocm: assume models are in /config/model_cache/yolov8/
* docker/rocm: compile onnx files into mxr files at startup
* switch model download into bash script
* detectors/rocm: automatically override HSA_OVERRIDE_GFX_VERSION for couple of known chipsets
* docs: rocm detector first notes
* typos
* describe builds (harakas temporary)
* docker/rocm: also build a version for gfx1100
* docker/rocm: use cp instead of tar
* docker.rocm: remove README as it is now in detector config
* frigate/detectors: renamed yolov8_preprocess->preprocess, pass input tensor element type
* docker/main: use newer openvino (2023.3.0)
* detectors: implement class aggregation
* update yolov8 model
* add openvino/yolov8 support for label aggregation
* docker: remove pointless s6/timeout-up files
* Revert "detectors: implement class aggregation"
This reverts commit dcfe6bbf6f.
* detectors/openvino: remove class aggregation
* detectors: increase yolov8 postprocessing score trershold to 0.5
* docker/rocm: separate rocm distributed files into its own build stage
* Update object_detectors.md
* updated CODEOWNERS file for rocm
* updated build names for documentation
* Revert "docker/main: use newer openvino (2023.3.0)"
This reverts commit dee95de908.
* reverrted openvino detector
* reverted edgetpu detector
* scratched rocm docs from any mention of edgetpu or openvino
* Update docs/docs/configuration/object_detectors.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* renamed frigate.detectors.yolo_utils.py -> frigate.detectors.util.py
* clarified rocm example performance
* Improved wording and clarified text
* Mentioned rocm detector for AMD GPUs
* applied ruff formating
* applied ruff suggested fixes
* docker/rocm: fix missing argument resulting in larger docker image sizes
* docs/configuration/object_detectors: fix links to yolov8 release files
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Ensure viewport is always full screen
* Protect against hour with no cards and ensure data is consistent
* Reduce grouped up image refreshes
* Include current hour and fix scrubbing bugginess
* Scroll initially selected timeline in to view
* Expand timelne class type
* Use poster image for preview on video player instead of using separate image view
* Fix available streaming modes
* Incrase timing for grouping timline items
* Fix audio activity listener
* Fix player not switching views correctly
* Use player time to convert to timeline time
* Update sub labels for previous timeline items
* Show mini timeline bar for non selected items
* Rewrite desktop timeline to use separate dynamic video player component
* Extend improvements to mobile as well
* Improve time formatting
* Fix scroll
* Fix no preview case
* Mobile fixes
* Audio toggle fixes
* More fixes for mobile
* Improve scaling of graph motion activity
* Add keyboard shortcut hook and support shortcuts for playback page
* Fix sizing of dialog
* Improve height scaling of dialog
* simplify and fix layout system for timeline
* Fix timeilne items not working
* Implement basic Frigate+ submitting from timeline
* make go2rtc always rebuild config at startup
/dev/shm can be left mounted (in fact im pretty sure it's always left mounted) on the docker host after shutting down the frigate container.
If we only check that the file doesn't exist, stale data gets re-read every startup
This will make troubleshooting a nightmare for the average user.
I had given up troubleshooting go2rtc several times because of this.
* generate config after supervisor data is loaded
* Fix fi
* fix fi
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* support for other yolov models and config checks
* apply code formatting
* Information about core mask and inference speed
* update rknn postprocess and remove params
* update model selection
* Apply suggestions from code review
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* support rknn on all socs
* apply changes from review and fix post process bug
* apply code formatting
* update tip in object_detectors docs
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* support for other yolov models and config checks
* apply code formatting
* Information about core mask and inference speed
* update rknn postprocess and remove params
* update model selection
* Apply suggestions from code review
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* implement nginx caching
* bypass cache from frigate frontend, reduce to 5s
* set cache time to 2s
* cache 200s for 5s
* exclude vod endpoints from cache
* Revert numpy upgrade
* Upgrade arm64 onnx version to match amd64
* Increase CODEOWNERS granularity
Not sure if it has an effect since I don't have repository write access
* Non-Jetson changes
Required for later commits:
- Allow base image to be overridden (and don't assume its WORKDIR)
- Ensure python3.9
- Map hwaccel decode presets as strings instead of lists
Not required:
- Fix existing documentation
- Simplify hwaccel scale logic
* Prepare for multi-arch tensorrt build
* Add tensorrt images for Jetson boards
* Add Jetson ffmpeg hwaccel
* Update docs
* Add CODEOWNERS
* CI
* Change default model from yolov7-tiny-416 to yolov7-320
In my experience the tiny models perform markedly worse without being
much faster
* fixup! Update docs
* Make main frigate build non rpi specific and build rpi using base image
* Add boards to sidebar
* Fix docker build
* Fix docs build
* Update pr branch for testing
* remove target from rpi build
* Remove manual build
* Add push build for rpi
* fix typos, improve wording
* Add arm build for rpi
* Cleanup and add default github ref name
* Cleanup docker build file system
* Setup to use docker bake
* Add ci/cd for bake
* Fix path
* Fix devcontainer
* Set targets
* Fix build
* Fix syntax
* Add wheels target
* Move dev container to trt
* Update key and fix rpi local
* Move requirements files and set intermediate targets
* Add back --load
* Update docs for community board development
* Update installation docs to reflect different builds available
* Update docs with official and community supported headers
* Update codeowners docs
* Update docs
* Assemble main and standard builds
* Change order of pushes
* Remove community board after successful build
* Fix rpi bake file names
* Update to latest tensorrt (8.6.1) release
* Build trt libyolo_layer.so in container
* Update tensorrt_models script to convert models from the frigate container
* Fix typo in model script
* Fix paths to yolo lib and models folder
* Add S6 scripts to test and convert specified TensortRT models at startup.
Rearrange tensorrt files into a docker support folder.
* Update TensorRT documentation to reflect the new model conversion process and minimum HW support.
* Fix model_cache path to live in config directory
* Move tensorrt s6 files to the correct directory
* Fix issues in model generation script
* Disable global timeout for s6 services
* Add version folder to tensorrt model_cache path
* Include TensorRT version 8.5.3
* Add numpy requirement prior to removal of np.bool
* This TRT version uses a mixture of cuda dependencies
* Redirect stdout from noisy model conversion
* Check ffmpeg version instead of checking for presence of BTBN_PATH
* Query ffmpeg version in s6 run script instead of subprocessing in every import
* Define LIBAVFORMAT_VERSION_MAJOR in devcontainer too
* Formatting
* Default ffmpeg version to current btbn version so unit tests pass
* Add ccache to libusb and nginx build scripts
* Add ccache support to Dockerfile for faster builds
* Add ccache to PATH and use it for compiling nginx with Makefile in build_nginx.sh script
* Add ability to export frigate clips
* Add http endpoint
* Add dir to nginx
* Add webUI
* Formatting
* Cleanup unused
* Optimize timelapse
* Fix pts
* Use JSON body for params
* Use hwaccel to encode when available
* Print ffmpeg command when fail
* Print ffmpeg command when fail
* Add separate ffmpeg preset for timelapse
* Add docs outlining the export directory
* Add export docs
* Use ''
* Fix playlist max time
* Lower max playlist time
* Add api docs for export
* isort fixes
* Add isort and ruff linter
Both linters are pretty common among modern python code bases.
The isort tool provides stable sorting and grouping, as well as pruning
of unused imports.
Ruff is a modern linter, that is very fast due to being written in rust.
It can detect many common issues in a python codebase.
Removes the pylint dev requirement, since ruff replaces it.
* treewide: fix issues detected by ruff
* treewide: fix bare except clauses
* .devcontainer: Set up isort
* treewide: optimize imports
* treewide: apply black
* treewide: make regex patterns raw strings
This is necessary for escape sequences to be properly recognized.
* Migrate db path to /config
* Ensure oneshot runs
* Put logic inside of Frigate's run
* Use new db default path in code
* Fix missing config dir
* Upgrade yq to 4.33.3