* Adding Models
* Final Async Update
* Bug Fixing
* Fix
* Adding fixes
* Working async infer
* Final Documenatation and debug update
* Removing some extra prints
* Post-process correct label push
* config docs fix
* Review Fix
* Review fix 2.0
* Fixing the ASYNC API to work from 30ms to 10ms
* Fix for multi stream async infernce
* Format
* Fix#3
* Format#2
* Remove Unnessery includes
* Sort Imports
* Fix#16845
Maybe after PR #16712 , ffmpeg build with JP6 seem broken with error `/usr/lib/ffmpeg/jetson/bin/ffmpeg: error while loading shared libraries: libavdevice.so.60: cannot open shared object file: No such file or directory`
This PR fixes the issue
* Adding new LD entry for ffmpeg new location
* Update Dockerfile.arm64
* Move LD config to Dockerfile arm64 instead of detector
* db migration
* db model
* assign admin role on password reset
* add role to jwt and api responses
* don't restrict api access for admins yet
* use json response
* frontend auth context
* update auth form for profile endpoint
* add access denied page
* add protected routes
* auth hook
* dialogs
* user settings view
* restrict viewer access to settings
* restrict camera functions for viewer role
* add password dialog to account menu
* spacing tweak
* migrator default to admin
* escape quotes in migrator
* ui tweaks
* tweaks
* colors
* colors
* fix merge conflict
* fix icons
* add api layer enforcement
* ui tweaks
* fix error message
* debug
* clean up
* remove print
* guard apis for admin only
* fix tests
* fix review tests
* use correct error responses from api in toasts
* add role to account menu
* Update vite
* Update LuIcons
* Update radix packages
* Fix other icons
* Use correct node version
* Remove superfluous web build on python tests
* Move web build to test
* Monitor if camera is disabled for review items
* Simplify multi camera disabled check
* Cleanup birdseye config handling
* Cleanup
* Remove old listeners
* Fix live cameras not showing on refresh
* Fix live dashboard when birdseye is added
* Handle cameras that are offline / disabled
* Use black instead of green frame
* Fix missing mqtt topics
* Adapt openai.py to work with xAI
It appears xAI is a bit more strict in regards to how the prompt is sent. This changes the prompt to be a dictionary with `"type": "text"` which works with OpenAI and xAI.
* Adapt openai.py to work with xAI
add "detail": "low"
* Adapt openai.py to work with xAI
Apply Ruff formatting and linting fixes
* config options
* metrics
* stop and restart ffmpeg processes
* dispatcher
* frontend websocket
* buttons for testing
* don't recreate log pipe
* add/remove cam from birdseye when enabling/disabling
* end all objects and send empty camera activity
* enable/disable switch in ui
* disable buttons when camera is disabled
* use enabled_in_config for some frontend checks
* tweaks
* handle settings pane with disabled cameras
* frontend tweaks
* change to debug log
* mqtt docs
* tweak
* ensure all ffmpeg processes are initially started
* clean up
* use zmq
* remove camera metrics
* remove camera metrics
* tweaks
* frontend tweaks
* Simplify rocm install and update to 6.3.1
* Build out more necessary packages
* Update to 6.3.3
* Set bake version
* Fix typo
* Ensure NHWC is used
* Reset dev changes
* Write to cache
* Update getting_started with full host:container syntax for hwacc
* Update edgetpu.md
Add a tip about the coral TPU not changing identification until after Frigate runs an inference on the TPU.
* Remove unneccessary trt wheels build
* Cleanup
* Try without local cuda
* Keep specific cuda libs only
* Cleanup
* Add newer libcufft
* remove target
* Include more
* recordings data pub/sub
* function to process recording stream frames
* model runner
* lpr model runner
* refactor to mixin class and use model runner
* separate out realtime and post processors
* move model and mixin folders
* basic postprocessor
* clean up
* docs
* postprocessing logic
* clean up
* return none if recordings are disabled
* run postprocessor handle_requests too
* tweak expansion
* add put endpoint
* postprocessor tweaks with endpoint
* Improve ffmpeg versions handling
* Remove fallback from LIBAVFORMAT_VERSION_MAJOR, it should always be set
* Mention ffprobe in custom ffmpeg docs
* Fix ffmpeg extraction
* Fix go2rtc example formatting
* Add fallback back to LIBAVFORMAT_VERSION_MAJOR
* Fix linter
* Move onnx runner
* Build out base embedding
* Convert text embedding to separate class
* Move image embedding to separate
* Move LPR to separate class
* Remove mono embedding
* Simplify model downloading
* Reorganize jina v1 embeddings
* Cleanup
* Cleanup for review
* Remove thumbnail from dict
* Create thumbnail diectory
* Cleanup handling of tracked object images
* Make thumbnail optional
* Handle cases where thumbnail is used
* Expand options for thumbnail api
* Fix up the does not exist condition
* Remove absolute usages of thumbnails
* Write thumbnails for external events
* Reduce webp quality
* Use webp everywhere in frontend
* Formatting
* Always consider all events when re-indexing
* Add thumbnail deletion and cleanup path management
* Cleanup imports
* Rename def
* Don't save thumbnail for every object
* Correct event count
* Use correct function
* Include thumbnail in query
* Remove unused
* Fix requiring exception
* add path point tracking to backend
* types
* draw paths on lifecycle pane
* make points clickable
* don't display a path if we don't have any saved path points
* only object lifecycle points should have a click handler
* change to debug log
* better debug log message
* add notification cooldown
* cooldown docs
* show alert box when notifications are used in an insecure context
* add ability to suspend notifications from dashboard context menu
* use a small yolov9 model for detection
* use yolov9 for users without frigate+ and update retention algorithm
* new lpr config fields
* levenshtein distance package
* tweaks
* docs
* norfair tracker config per object type
* change default R back to 3.4
* separate trackers for static and autotracking cameras
* tweak params and fix debug draw
* ensure all trackers are correctly updated even when there are no detections
* basic reid with histograms
* check mp value
* check mp value again
* stationary objects won't have embeddings
* don't switch trackers when autotracking is toggled after startup
* improve motion detection during autotracking
* use helper function
* get histogram in tracker instead of detect
* backend
* frontend
* add notification config at camera level
* camera level notifications in dispatcher
* initial onconnect
* frontend
* backend for suspended notifications
* frontend
* use base communicator
* initialize all cameras in suspended array and use 0 for unsuspended
* remove switch and use select for suspending in frontend
* use timestamp instead of datetime
* frontend tweaks
* mqtt docs
* fix button width
* use grid for layout
* use thread and queue for processing notifications with 10s timeout
* clean up
* move async code to main class
* tweaks
* docs
* remove warning message
* WIP yolov9
* Implement post processing for yolov9
* Cleanup detection
* Update docs to make note of supported yolov9
* Move post processing to separate utility
* Add note about other models
* utility functions
* backend config
* backend object speed tracking
* draw speed on debug view
* basic frontend zone editor
* remove line sorting
* fix types
* highlight line on canvas when entering value in zone edit pane
* rename vars and add validation
* ensure speed estimation is disabled when user adds more than 4 points
* pixel velocity in debug
* unit_system in config
* ability to define unit system in config
* save max speed to db
* frontend
* docs
* clarify docs
* utility functions
* backend config
* backend object speed tracking
* draw speed on debug view
* basic frontend zone editor
* remove line sorting
* fix types
* highlight line on canvas when entering value in zone edit pane
* rename vars and add validation
* ensure speed estimation is disabled when user adds more than 4 points
* pixel velocity in debug
* unit_system in config
* ability to define unit system in config
* save max speed to db
* frontend
* docs
* clarify docs
* fix duplicates from merge
* include max_estimated_speed in api responses
* add units to zone edit pane
* catch undefined
* add average speed
* clarify docs
* only track average speed when object is active
* rename vars
* ensure points and distances are ordered clockwise
* only store the last 10 speeds like score history
* remove max estimated speed
* update docs
* update docs
* fix point ordering
* improve readability
* docs inertia recommendation
* fix point ordering
* check object frame time
* add velocity angle to frontend
* docs clarity
* add frontend speed filter
* fix mqtt docs
* fix mqtt docs
* don't try to remove distances if they weren't already defined
* don't display estimates on debug view/snapshots if object is not in a speed tracking zone
* docs
* implement speed_threshold for zone presence
* docs for threshold
* better ground plane image
* improve image zone size
* add inertia to speed threshold example
* config file changes
* config migrator
* stream selection on single camera live view
* camera streaming settings dialog
* manage persistent group streaming settings
* apply streaming settings in camera groups
* add ability to clear all streaming settings from settings
* docs
* update reference config
* fixes
* clarify docs
* use first stream as default in dialog
* ensure still image is visible after switching stream type to none
* docs
* clarify docs
* add ability to continue playing stream in background
* fix props
* put stream selection inside dropdown on desktop
* add capabilities to live mode hook
* live context menu component
* resize observer: only return new dimensions if they've actually changed
* pass volume prop to players
* fix slider bug, https://github.com/shadcn-ui/ui/issues/1448
* update react-grid-layout
* prevent animated transitions on draggable grid layout
* add context menu to dashboards
* use provider
* streaming dialog from context menu
* docs
* add jsmpeg warning to context menu
* audio and two way talk indicators in single camera view
* add link to debug view
* don't use hook
* create manual events from live camera view
* maintain grow classes on grid items
* fix initial volume state on default dashboard
* fix pointer events causing context menu to end up underneath image on iOS
* mobile drawer tweaks
* stream stats
* show settings menu for non-restreamed cameras
* consistent settings icon
* tweaks
* optional stats to fix birdseye player
* add toaster to live camera view
* fix crash on initial save in streaming dialog
* don't require restreaming for context menu streaming settings
* add debug view to context menu
* stats fixes
* update docs
* always show stream info when restreamed
* update camera streaming dialog
* make note of no h265 support for webrtc
* docs clarity
* ensure docs show streams as a dict
* docs clarity
* fix css file
* tweaks
* virtualize event segments
* use virtual segments in event review timeline
* add segmentkey to props
* virtualize motion segments
* use virtual segments in motion review timeline
* update draggable element hook to use only math
* timeline zooming hook
* add zooming to event review timeline
* update playground
* zoomable timeline on recording view
* consolidate divs in summary timeline
* only calculate motion data for visible motion segments
* use swr loading state
* fix motion only
* keep handlebar centered when zooming
* zoom animations
* clean up
* ensure motion only checks both halves of segment
* prevent handlebar jump when using motion only mode
* Start working on bird processor
* Initial setup for bird processing
* Improvements to handling
* Get classification working
* Cleanup classification
* Add classification config
* Update sort
* Actually send result to face registration
* Define postprocessing api and move face processing to fit
* Standardize request handling
* Standardize handling of processors
* Rename processing metrics
* Cleanup
* Standardize object end
* Update to newer formatting
* One more
* One more
* Get stats for embeddings inferences
* cleanup embeddings inferences
* Enable UI for feature metrics
* Change threshold
* Fix check
* Update python for actions
* Set python version
* Ignore type for now
* Support downloading face models
* Handle download and loading correctly
* Add face dir creation
* Fix error
* Fix
* Formatting
* Move upload to button
* Show number of faces in library for each name
* Add text color for score
* Cleanup
* rockchip: update dependencies and add script for model conversion
* rockchip: update docs
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* use ruamel to parse and preserve line numbers for config validation
* maintain exception for non validation errors
* fix types
* include input in log messages
* Validate faces using cosine distance and SVC
* Formatting
* Use opencv instead of face embedding
* Update docs for training data
* Adjust to score system
* Set bounds
* remove face embeddings
* Update writing images
* Add face library page
* Add ability to select file
* Install opencv deps
* Cleanup
* Use different deps
* Move deps
* Cleanup
* Only show face library for desktop
* Implement deleting
* Add ability to upload image
* Add support for uploading images
* Add margin to detected faces for embeddings
* Standardize pixel values for face input
* Use SVC to classify faces
* Clear classifier when new face is added
* Formatting
* Add dependency
* Update version
* Face recognition backend (#14495)
* Add basic config and face recognition table
* Reconfigure updates processing to handle face
* Crop frame to face box
* Implement face embedding calculation
* Get matching face embeddings
* Add support face recognition based on existing faces
* Use arcface face embeddings instead of generic embeddings model
* Add apis for managing faces
* Implement face uploading API
* Build out more APIs
* Add min area config
* Handle larger images
* Add more debug logs
* fix calculation
* Reduce timeout
* Small tweaks
* Use webp images
* Use facenet model
* Improve face recognition (#14537)
* Increase requirements for face to be set
* Manage faces properly
* Add basic docs
* Simplify
* Separate out face recognition frome semantic search
* Update docs
* Formatting
* Fix access (#14540)
* Face detection (#14544)
* Add support for face detection
* Add support for detecting faces during registration
* Set body size to be larger
* Undo
* Update version
* Face recognition backend (#14495)
* Add basic config and face recognition table
* Reconfigure updates processing to handle face
* Crop frame to face box
* Implement face embedding calculation
* Get matching face embeddings
* Add support face recognition based on existing faces
* Use arcface face embeddings instead of generic embeddings model
* Add apis for managing faces
* Implement face uploading API
* Build out more APIs
* Add min area config
* Handle larger images
* Add more debug logs
* fix calculation
* Reduce timeout
* Small tweaks
* Use webp images
* Use facenet model
* Improve face recognition (#14537)
* Increase requirements for face to be set
* Manage faces properly
* Add basic docs
* Simplify
* Separate out face recognition frome semantic search
* Update docs
* Formatting
* Fix access (#14540)
* Face detection (#14544)
* Add support for face detection
* Add support for detecting faces during registration
* Set body size to be larger
* Undo
* initial foundation for alpr with paddleocr
* initial foundation for alpr with paddleocr
* initial foundation for alpr with paddleocr
* config
* config
* lpr maintainer
* clean up
* clean up
* fix processing
* don't process for stationary cars
* fix order
* fixes
* check for known plates
* improved length and character by character confidence
* model fixes and small tweaks
* docs
* placeholder for non frigate+ model lp detection
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Increase requirements for face to be set
* Manage faces properly
* Add basic docs
* Simplify
* Separate out face recognition frome semantic search
* Update docs
* Formatting
* Add basic config and face recognition table
* Reconfigure updates processing to handle face
* Crop frame to face box
* Implement face embedding calculation
* Get matching face embeddings
* Add support face recognition based on existing faces
* Use arcface face embeddings instead of generic embeddings model
* Add apis for managing faces
* Implement face uploading API
* Build out more APIs
* Add min area config
* Handle larger images
* Add more debug logs
* fix calculation
* Reduce timeout
* Small tweaks
* Use webp images
* Use facenet model
* Started unit tests for the review controller
* Revert "Started unit tests for the review controller"
This reverts commit 7746eb146f.
* Started unit tests for GET /review/activity/motion Endpoint
* Started unit tests for GET /review/event/{event_id} Endpoint
* Continued unit tests for GET /review/event/{event_id} Endpoint
* Continued unit tests for GET /review/{event_id} Endpoint
* Continued unit tests for GET /review/{review_id} Endpoint
* Added unit tests for GET /review/{review_id}/viewed Endpoint
* Added unit tests for GET /stats Endpoint
* Added unit tests for GET /events Endpoint
* Updated unit tests for GET /events Endpoint
* Deleted unit tests for /events from test_http (updated tests are now in test_http_event.py)
* Removed duplicated test for GET /review/activity/motion Endpoint
* Refactor hardware docs to show model specific speeds
* Move hailo to first party detectors
* Make note of multiple detectors
* Improve hierarchy
* Update object_detectors.md
* Update hardware.md
* update docs to be more clear regarding audio support and go2rtc requirement
Signed-off-by: Ben Clouser <dev@benclouser.com>
* Update docs/docs/troubleshooting/faqs.md
* Update docs/docs/troubleshooting/faqs.md
* Update docs/docs/troubleshooting/faqs.md
* Clarify title
* Cleanup
---------
Signed-off-by: Ben Clouser <dev@benclouser.com>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* GenAI: add ability to save JPGs sent to provider
* Remove mention from GenAI docs
* Change config name to debug_save_thumbnails
* Change folder structure to clips/genai-requests/{event_id}/{1.jpg}
* Organize api files
* Add more API definitions for events
* Add export select by ID
* Typing fixes
* Update openapi spec
* Change type
* Fix test
* Fix message
* Fix tests
* use id instead of index for object details and scrolling
* long press package and hook
* fix long press in review
* search action group
* multi select in explore
* add bulk deletion to backend api
* clean up
* mimic behavior of review
* don't open dialog on left click when mutli selecting
* context menu on container ref
* revert long press code
* clean up
The archive already has everything contained in a rootfs folder, extract
it as-is to the root folder. This also reverts changes from
33957e5360 which addressed the same issue
in a less optimal way.
* Fix audio events in explore section
Make sure that audio events are listed in the explore section
* Update audio.py
* Hide other submit options
Only allow submits for objects only
* Started unit tests for the review controller
* Revert "Started unit tests for the review controller"
This reverts commit 7746eb146f.
* Started unit tests for the review controller
* FIrst test
* Added test for review endpoint (time filter - after + before)
* Assert expected event
* Added more tests for review endpoint
* Added test for review endpoint with all filters
* Added test for review endpoint with limit
* Comment
* Renamed tests to increase readability
* fix regex for cookie_name to be general snake case
* Update frigate/config/auth.py
Co-authored-by: Blake Blackshear <blake.blackshear@gmail.com>
---------
Co-authored-by: Blake Blackshear <blake.blackshear@gmail.com>
* Don't track shared memory in frame tracker
* Don't track any instance
* Don't assign sub label to objects when multiple cars are overlapping
* Formatting
* Fix assignment
* Use custom body for the export recordings endpoint
* Fixed usage of ExportRecordingsBody
* Updated docs to reflect changes to export endpoint
* Fix friendly name and source
* Updated openAPI spec
* Remove extra spacing for next/prev carousel buttons
* Clarify ollama genai docs
* Clean up copied gpu info output
* Clean up copied gpu info output
* Better display when manually copying/pasting log data
* Home/End buttons for search input and max 8 search columns
* Fix lifecycle label
* remove video tab if tracked object has no clip
* hide object lifecycle if there is no clip
* add test for filter value to ensure only fully numeric values are set as numbers
* Ensure review and search item mobile pages reopen correctly
* disable pan/pinch/zoom when native browser video controls are displayed
* report 0 for storage usage when api returns null
* Updated documentation for the review endpoint
* Updated documentation for the review/summary endpoint
* Updated documentation for the review/summary endpoint
* Documentation for the review activity audio and motion endpoints
* Added responses for more review.py endpoints
* Added responses for more review.py endpoints
* Fixed review.py responses and proper path parameter names
* Added body model for /reviews/viewed and /reviews/delete
* Updated OpenAPI specification for the review controller endpoints
* Run ruff format frigate
* Drop significant_motion
* Updated frigate-api.yaml
* Deleted total_motion
* Combine 2 models into generic
* Add reindex progress to mobile bottom bar status alert
* move menu to new component
* actions component in search footer thumbnail
* context menu for explore summary thumbnail images
* readd top_score to search query for old events
* Add service manager infrastructure
The changes are (This will be a bit long):
- A ServiceManager class that spawns a background thread and deals with
service lifecycle management. The idea is that service lifecycle code
will run in async functions, so a single thread is enough to manage
any (reasonable) amount of services.
- A Service class, that offers start(), stop() and restart() methods
that simply notify the service manager to... well. Start, stop or
restart a service.
(!) Warning: Note that this differs from mp.Process.start/stop in that
the service commands are sent asynchronously and will complete
"eventually". This is good because it means that business logic is
fast when booting up and shutting down, but we need to make sure
that code does not rely on start() and stop() being instant
(Mainly pid assignments).
Subclasses of the Service class should use the on_start and on_stop
methods to monitor for service events. These will be run by the
service manager thread, so we need to be careful not to block
execution here. Standard async stuff.
(!) Note on service names: Service names should be unique within a
ServiceManager. Make sure that you pass the name you want to
super().__init__(name="...") if you plan to spawn multiple instances
of a service.
- A ServiceProcess class: A Service that wraps a multiprocessing.Process
into a Service. It offers a run() method subclasses can override and
can support in-place restarting using the service manager.
And finally, I lied a bit about this whole thing using a single thread.
I can't find any way to run python multiprocessing in async, so there is
a MultiprocessingWaiter thread that waits for multiprocessing events and
notifies any pending futures. This was uhhh... fun? No, not really.
But it works. Using this part of the code just involves calling the
provided wait method. See the implementation of ServiceProcess for more
details.
Mirror util.Process hooks onto service process
Remove Service.__name attribute
Do not serialize process object on ServiceProcess start.
asd
* Update frigate dictionary
* Convert AudioProcessor to service process
* only save a fixed number of thumbnails if genai is enabled
* disable cpu_mem_arena to save on memory until its actually needed
* fix search settings pane so it actually saves to the config
* Fix access
* Reorganize tracked object for imports
* Separate out rockchip build
* Formatting
* Use original ffmpeg build
* Fix build
* Update default search type value
* backend score filtering and sorting
* score filter frontend
* use input for score filtering
* use correct score on search thumbnail
* add popover to explain top_score
* revert sublabel score calc
* update filters logic
* fix rounding on score
* wait until default view is loaded
* don't turn button to selected style for similarity searches
* clarify language
* fix alert dialog buttons to use correct destructive variant
* use root level top_score for very old events
* better arrangement of thumbnail footer items on smaller screens
* Add time ago to explore summary view on desktop
* add search settings for columns and default view selection
* add descriptions
* clarify wording
* padding tweak
* padding tweaks for mobile
* fix size of activity indicator
* smaller
* fix search type switches
* select/unselect style for more filters button
* fix reset button
* fix labels scrollbar
* set min width and remove modal to allow scrolling with filters open
* hover colors
* better match of font size
* stop sheet from displaying console errors
* fix detail dialog behavior
* Handle Frigate+ submitted case
* Add search settings and rename general to ui settings
* Add platform aware sheet component
* use two columns on mobile view
* Add cameras page to more filters
* clean up search settings view
* Add time range to side filter
* better match with ui settings
* fix icon size
* use two columns on mobile view
* clean up search settings view
* Add zones and saving logic
* Add all filters to side panel
* better match with ui settings
* fix icon size
* Fix mobile fitler page
* Fix embeddings access
* Cleanup
* Fix scroll
* fix double scrollbars and add separators on mobile too
* two columns on mobile
* italics for emphasis
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Publish model state and embeddings reindex in dispatcher onConnect
* remove unneeded from explore
* add embeddings reindex progress to statusbar
* don't allow right click or show similar button if semantic search is disabled
* fix status bar
* Convert peewee model to dict before formatting for genai description
* add embeddings reindex progress to statusbar
* fix status bar
* Convert peewee model to dict before formatting for genai description
* Publish model state and embeddings reindex in dispatcher onConnect
* remove unneeded from explore
* add embeddings reindex progress to statusbar
* don't allow right click or show similar button if semantic search is disabled
* fix status bar
* custom hook and generic video player component
* add export preview dialog
* export preview dialog when using timeline export
* refactor search detail dialog to use new generic video player component
* clean up
* Remove device config and use model size to configure device used
* Don't show Frigate+ submission when in progress
* Add docs link for bounding box colors
* Use cosine distance metric for vec tables
* Only apply normalization to multi modal searches
* Catch possible edge case in stddev calc
* Use sigmoid function for normalization for multi modal searches only
* Ensure we get model state on initial page load
* Only save stats for multi modal searches and only use cosine similarity for image -> image search
* Add config option to select fp16 or quantized jina vision model
* requires_fp16 for text and large models only
* fix model type check
* fix cpu
* pass model size
* refactor dispatcher
* add reindex to dictionary
* add circular progress bar component
* Add progress to UI when embeddings are reindexing
* readd comments to dispatcher for clarity
* Only report progress every 10 events so we don't spam the logs and websocket
* clean up
* add generic onnx model class and use jina ai clip models for all embeddings
* fix merge confligt
* add generic onnx model class and use jina ai clip models for all embeddings
* fix merge confligt
* preferred providers
* fix paths
* disable download progress bar
* remove logging of path
* drop and recreate tables on reindex
* use cache paths
* fix model name
* use trust remote code per transformers docs
* ensure tokenizer and feature extractor are correctly loaded
* revert
* manually download and cache feature extractor config
* remove unneeded
* remove old clip and minilm code
* docs update
* :Add support for nvidia driver info
* Don't show temperature if detector isn't called coral
* Add encoder and decoder info for Nvidia GPUs
* Fix device info
* Implement GPU info for nvidia GPU
* Update web/src/views/system/GeneralMetrics.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update web/src/views/system/GeneralMetrics.tsx
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* swap sqlite_vec for chroma in requirements
* load sqlite_vec in embeddings manager
* remove chroma and revamp Embeddings class for sqlite_vec
* manual minilm onnx inference
* remove chroma in clip model
* migrate api from chroma to sqlite_vec
* migrate event cleanup from chroma to sqlite_vec
* migrate embedding maintainer from chroma to sqlite_vec
* genai description for sqlite_vec
* load sqlite_vec in main thread db
* extend the SqliteQueueDatabase class and use peewee db.execute_sql
* search with Event type for similarity
* fix similarity search
* install and add comment about transformers
* fix normalization
* add id filter
* clean up
* clean up
* fully remove chroma and add transformers env var
* readd uvicorn for fastapi
* readd tokenizer parallelism env var
* remove chroma from docs
* remove chroma from UI
* try removing custom pysqlite3 build
* hard code limit
* optimize queries
* revert explore query
* fix query
* keep building pysqlite3
* single pass fetch and process
* remove unnecessary re-embed
* update deps
* move SqliteVecQueueDatabase to db directory
* make search thumbnail take up full size of results box
* improve typing
* improve model downloading and add status screen
* daemon downloading thread
* catch case when semantic search is disabled
* fix typing
* build sqlite_vec from source
* resolve conflict
* file permissions
* try build deps
* remove sources
* sources
* fix thread start
* include git in build
* reorder embeddings after detectors are started
* build with sqlite amalgamation
* non-platform specific
* use wget instead of curl
* remove unzip -d
* remove sqlite_vec from requirements and load the compiled version
* fix build
* avoid race in db connection
* add scale_factor and bias to description zscore normalization
* Updated documentation
* docusaurus.config and sidebars converted to Typescript to allow for typings
* Added type for sidebars.ts
* Replaced integrations/api.md with automatically generated openAPI specification. Make sidebar collapsible to increase readability
* Fix HTTP API links in the documentation
* Added rust as language in the openapi sidebar
* Make sure configuration/pwa is present
* Fix API slug
* Fix links
* Revert sidebarCollapsible configuration
* Make HTTP API sidebar collapsed by default. Added CSS for OpenAPI methods
* Proper localhost server path
* Proper localhost server path
* No introduction page
* Lint
* Added stop_event to util.Process
util.Process will take care of receiving signals when the stop_event is
accessed in the subclass. If it never is, SystemExit is raised instead.
This has the effect of still behaving like multiprocessing.Process when
stop_event is not accessed, while still allowing subclasses to not deal
with the hassle of setting it up.
* Give each util.Process their own logger
This will help to reduce boilerplate in subclasses.
* Give explicit types to util.Process.__init__
This gives better type hinting in the editor.
* Use util.Process facilities in AudioProcessor
Boilerplate begone!
* Removed pointless check in util.Process
The log_listener.queue should never be None, unless something has gone
extremely wrong in the log setup code. If we're that far gone, crashing
is better.
* Make sure faulthandler is enabled in all processes
This has no effect currently since we're using the fork start_method.
However, when we inevidably switch to forkserver (either by choice, or
by upgrading to python 3.14+) not having this makes for some really fun
failure modes :D
I just saw this, and I would be very surprised by that behaviour as a
user. Changing the db path would randomly move the database, and
changing it back (or to anything, really) would not. These kinds of
advanced settings are generally expected to do one thing: Change the
path frigate opens the database from. The end.
* fix squashed alert thumbnails in filmstrip
* add genai debug logs
* consistent themed image loading indicator background color
* improve image loading skeleton in object lifecycle pane
* less rounding when screen is smaller
* use browser back button to dismiss review pane
* initial state
* Allow embedding of snapshot for description via config option
* docs
* frontend button
* Backend
* crop snapshot to region
* only show dropdown when event has snapshot
* fix cursor on dropdown
* crop on initial generation as well
* use enum for type
* fix type
* Add loading indicator when explore view is revalidating
* Portal tooltip in object lifecycle pane
* Better config file handling
* Only manually set aspect ratio when using alert videos
* Update general support template
* Update camera support
* Update config-support.yml
* Update detector support
* Update general-support.yml
* Update hardware-acceleration-support.yml
* Create pull_request_template.md
* Subclass Process for audio_process
* Introduce custom mp.Process subclass
In preparation to switch the multiprocessing startup method away from
"fork", we cannot rely on os.fork cloning the log state at fork time.
Instead, we have to set up logging before we run the business logic of
each process.
* Make camera_metrics into a class
* Make ptz_metrics into a class
* Fixed PtzMotionEstimator.ptz_metrics type annotation
* Removed pointless variables
* Do not start audio processor when no audio cameras are configured
* Portal tooltips
* Add ability to time_range filter chroma searches
* centering and padding consistency
* add event id back to chroma metadata
* query sqlite first and pass those ids to chroma for embeddings search
* ensure we pass timezone to the api call
* remove object lifecycle from search details for non-object events
* simplify hour calculation
* fix query without filters
* bump chroma version
* chroma 0.5.7
* fix selecting camera group in cameras filter button
* Prevent keyboard shortcuts from running when input is focused
* fix reset button and update time pickers when using input
* simplify css
* consistent button order and spacing
* Add ability to filter by time range
* Cleanup
* Handle input with tags
* fix input for time_range filter
* fix before and after filters
* clean up
* Ensure the default value works as expected
* Handle time range in am/pm based on browser
* Fix arrow
* Fix text
* Handle midnight case
* fix width
* Fix bg
* Fix bg
* Fix mobile spacing
* y spacing
* remove left padding
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Add ability to restrict genai to labels and zones at the camera level
* fix comment
* clarify docs
* use objects instead of labels
* docs
* object list
* POC: Added FastAPI with one endpoint (get /logs/service)
* POC: Revert error_log
* POC: Converted preview related endpoints to FastAPI
* POC: Converted two more endpoints to FastAPI
* POC: lint
* Convert all media endpoints to FastAPI. Added /media prefix (/media/camera && media/events && /media/preview)
* Convert all notifications API endpoints to FastAPI
* Convert first review API endpoints to FastAPI
* Convert remaining review API endpoints to FastAPI
* Convert export endpoints to FastAPI
* Fix path parameters
* Convert events endpoints to FastAPI
* Use body for multiple events endpoints
* Use body for multiple events endpoints (create and end event)
* Convert app endpoints to FastAPI
* Convert app endpoints to FastAPI
* Convert auth endpoints to FastAPI
* Removed flask app in favour of FastAPI app. Implemented FastAPI middleware to check CSRF, connect and disconnect from DB. Added middleware x-forwared-for headers
* Added starlette plugin to expose custom headers
* Use slowapi as the limiter
* Use query parameters for the frame latest endpoint
* Use query parameters for the media snapshot.jpg endpoint
* Use query parameters for the media MJPEG feed endpoint
* Revert initial nginx.conf change
* Added missing even_id for /events/search endpoint
* Removed left over comment
* Use FastAPI TestClient
* severity query parameter should be a string
* Use the same pattern for all tests
* Fix endpoint
* Revert media routers to old names. Order routes to make sure the dynamic ones from media.py are only used whenever there's no match on auth/etc
* Reverted paths for media on tsx files
* Deleted file
* Fix test_http to use TestClient
* Formatting
* Bind timeline to DB
* Fix http tests
* Replace filename with pathvalidate
* Fix latest.ext handling and disable uvicorn access logs
* Add cosntraints to api provided values
* Formatting
* Remove unused
* Remove unused
* Get rate limiter working
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Moved FrigateApp.init_config() into FrigateConfig.load()
* Move frigate config loading into main
* Store PlusApi in FrigateConfig
* Register SIGTERM handler in main
* Ensure logging is setup during config parsing
* Removed pointless try
* Moved config initialization out of FrigateApp
* Made FrigateApp.shm_frame_count into a function
* Removed log calls from signal handlers
python's logging calls are not re-entrant, which caused at least one of
these to deadlock randomly.
* Reopen stdout/err on process fork
This helps avoid deadlocks (https://github.com/python/cpython/issues/91776).
* Make mypy happy
* Whoops. I might have forgotten to save.
Truly an amateur mistake.
* Always call FrigateApp.stop()
* Ignore entire __pycache__ folder instead of individual *.pyc files
* Ignore .mypy_cache in git
* Rework config YAML parsing to use only ruamel.yaml
PyYAML silently overrides keys when encountering duplicates, but ruamel
raises and exception by default. Since we're already using it elsewhere,
dropping PyYAML is an easy choice to make.
* Added EnvString in config to slim down runtime_config()
* Added gitlens to devcontainer
* Automatically call FrigateConfig.runtime_config()
runtime_config needed to be called manually before. Now, it's been
removed, but the same code is run by a pydantic validator.
* Fix handling of missing -segment_time
* Removed type annotation on FrigateConfig's parse
I'd like to keep them, but then mypy complains about some fundamental
errors with how the pydantic model is structured. I'd like to fix it,
but I'd rather work towards moving some of this config to the database.
* add event_id param to api
* exclude query from filtertype
* update review pane link for similarity search
* update filter group for similarity param and fix switch bug
* unneeded prop
* update query and input for similarity search param
* use undefined instead of empty string for query with similarity search
* Implement ROCm detectors
* Cleanup tensor input
* Fixup image creation
* Add support for yolonas in onnx
* Get build working with onnx
* Update docs and simplify config
* Remove unused imports
* create input with tags component
* tweaks
* only show filters pane when there are actual filters
* special case for similarity searches
* similarity search tweaks
* populate suggestions values
* scrollbar on outer div
* clean up
* separate custom hook
* use command component
* tooltips
* regex tweaks
* saved searches with confirmation dialogs
* better date handling
* fix filters
* filter capitalization
* filter instructions
* replace underscore in filter type
* alert dialog button color
* toaster on success
* Ignore entire __pycache__ folder instead of individual *.pyc files
* Rewrite the yaml loader to match PyYAML
The old implementation would fail in weird ways with configs that were
incorrect in just the right way. The new implementation just does what
PyYAML would do, only diverging in case of duplicate keys.
* Clarify duplicate yaml key ValueError message
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Set caching options for hardware providers
* Always use CPU for searching
* Use new install strategy to remove onnxruntime and then install post wheels
* Make logging code self-contained.
Rewrite logging code to use python's builting QueueListener, effectively
moving the logging process into a thread of the Frigate app.
Also, wrap this behaviour in a easy-to-use context manager to encourage
some consistency.
* Fixed typing errors
* Remove todo note from log filter
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Do not access log record's msg directly
* Clear all root handlers before starting app
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Format makefiles
* Handle all errors in rocm makefile
* Remove CURRENT_UID and GID from makefile as they are unused
* Removed unused vite.svg asset
* Sort frigate-dictionary
* Add support for yolonas in onnx
* Add correct deps
* Set ld library path
* Refactor cudnn to only be used in amd64
* Add onnx to docs and add explainer at the top
* Undo change
* Update comment
* Remove uneccesary
* Remove line change
* Install multiple ffmpeg versions and add config to make it configurable
* Update docs
* Run ffprobe too
* Cleanup
* Apply config to go2rtc as well
* Fix ffmpeg bin
* Docs
* Restore path
* Cleanup env var
* Fix ffmpeg path for encoding
* Fix export
* Formatting
* mobile page component
* object lifecycle pane tweaks
* use mobile page component for review and search detail
* fix frigate+ dialog when using mobile page component
* small tweaks
* Improve image loading by not loading when off screen
* Add share menu to export
* Add share button and tidy up review detail lists
* Fix missing key
* Use query args for review filter
* Add object lifecycle to explore dialog
* Adjust sizing
* Simplify share button
* Always show snapshot but hide buttons for frigate+ if not applicable
* Handle case when user switches to element missing the previously selected tab
* Handle cases where share is not available
* Fix logic
* Always enable search page
* Always show eents when searching
* No default search background
* Center and show all filters when semantic search is not enabled
* Limit number of default items shown
* Adjust search options
* Add support for sub label filtering
* Separate out filters and clean up detail pane
* Tablet cleanup
* Fix current hour search preview
* Handle single lists
* Cleanup api search
* Object lifecycle pane
* fix thumbnails and annotation offset math
* snapshot endpoint height and format, yaml types, bugfixes
* clean up for new type
* use get_image_from_recording in recordings snapshot api
* make height optional
* Initial implementation of active object counters. Need to clean up a bit more and examine reuse of stationary/active logic in neighboring modules.
* A bit more cleanup for references to active, referencing the tracked object method rather than duplicating logic.
* Minor formatting and readability cleanup
* Update docs with the new active mqtt metric definition.
* Move the check for a change in active status into the code block protected by a false positive check.
* - Add 'active' to the tracked object dictionary, use the previous object for active comparison.
- I also missed emitting updates when a tracked object is no longer tracked, and added handling for emitting zeros on object types.
* Refactor recordings config to be based off of review items
* Update object processing logic for when an event is created
* Migrate to deciding recording retention based on review items
* Refactor recording expiration to be based off of review items
* Remove remainder of recording events access
* Handle migration automatically
* Update version and cleanup
* Update docs
* Clarify docs
* Cleanup
* Target camera config
* Safely access all fields
* Handle case where camera is offline when generating previews
* Don't rely on slow system
* Simplify checks to rely on other cameras
* Formatting
* Cleanup
* Initial support for Hailo-8L
Added file for Hailo-8L detector including dockerfile, h8l.mk, h8l.hcl, hailo8l.py, ci.yml and ssd_mobilenat_v1.hef as the inference network.
Added files to help with the installation of Hailo-8L dependences like generate_wheel_conf.py, requirements-wheel-h8l.txt and modified setup.py to try and work with any hardware.
Updated docs to reflect Initial Hailo-8L support including oject_detectors.md, hardware.md and installation.md.
* Update .github/workflows/ci.yml
typo h8l not arm64
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/object_detectors.md
Clarity for the end user and correct uses of words
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/frigate/installation.md
typo
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* update Installation.md to clarify Hailo-8L installation process.
* Update docs/docs/frigate/hardware.md
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update hardware.md add Inference time.
* Oops no new line at the end of the file.
* Update docs/docs/frigate/hardware.md typo
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Update dockerfile to download the ssd_modilenet_v1 model instead of having it in the repo.
* Updated dockerfile so it dose not download the model file.
add function to download it at runtime.
update model path.
* fix formatting according to ruff and removed unnecessary functions.
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Add basic search page
* Abstract filters to separate components
* Make searching functional
* Add loading and no results indicators
* Implement searching
* Combine account and settings menus on mobile
* Support using thumbnail for in progress detections
* Fetch previews
* Move recordings view and open recordings when search is selected
* Implement detail pane
* Implement saving of description
* Implement similarity search
* Fix clicking
* Add date range picker
* Fix
* Fix iOS zoom bug
* Mobile fixes
* Use text area
* Fix spacing for drawer
* Fix fetching previews incorrectly
* Initial re-implementation of semantic search
* put docker-compose back and make reindex match docs
* remove debug code and fix import
* fix docs
* manually build pysqlite3 as binaries are only available for x86-64
* update comment in build_pysqlite3.sh
* only embed objects
* better error handling when genai fails
* ask ollama to pull requested model at startup
* update ollama docs
* address some PR review comments
* fix lint
* use IPC to write description, update docs for reindex
* remove gemini-pro-vision from docs as it will be unavailable soon
* fix OpenAI doc available models
* fix api error in gemini and metadata for embeddings
* Revamp support discussion templates
* move text to description
* remove duplicate logs box
* ffprobe on camera support
* longer description on config support
* Jump to live when exceeding buffer time threshold in MSE player
* clean up
* Try adjusting playback rate instead of jumping to live
* clean up
* fallback to webrtc if enabled before jsmpeg
* baseline
* clean up
* remove comments
* adaptive playback rate and intelligent switching improvements
* increase logging and reset live mode after camera is no longer active on dashboard only
* jump to live on safari/iOS
* clean up
* clean up
* refactor camera live mode hook
* remove key listener
* resolve conflicts
* If recordings don't exist mark as no recordings
* Fix reloading recordings failing
* Fix mark items not clearing selected
* Cleanup
* Default to last full hour when error occurs
* Remove check
* Cleanup
* Handle empty recordings list case
* Ensure that the start time is within the time range
* Catch other reset cases
Ensure axios.defaults.baseURL is set when accessing login form.
Drop `/api` prefix in login form's `axios.post` call, since `/api` is
part of the baseURL.
Redirect to subpath on succesful authentication.
Prepend subpath to default logout url.
Fixes#12814
* Update live view docs with camera firmware settings recommendations
* video/audio
* capitalization
* Video only cams
* clarify higher iframes
* update wording
* fix wording
* Add note on camera specific page
* change note
* Revamp support discussion templates
* move text to description
* remove duplicate logs box
* ffprobe on camera support
* longer description on config support
* Jump to live when exceeding buffer time threshold in MSE player
* clean up
* Try adjusting playback rate instead of jumping to live
* clean up
* fallback to webrtc if enabled before jsmpeg
* baseline
* clean up
* remove comments
* adaptive playback rate and intelligent switching improvements
* increase logging and reset live mode after camera is no longer active on dashboard only
* jump to live on safari/iOS
* clean up
* clean up
* refactor camera live mode hook
* remove key listener
* resolve conflicts
* If recordings don't exist mark as no recordings
* Fix reloading recordings failing
* Fix mark items not clearing selected
* Cleanup
* Default to last full hour when error occurs
* Remove check
* Cleanup
* Handle empty recordings list case
* Ensure that the start time is within the time range
* Catch other reset cases
Ensure axios.defaults.baseURL is set when accessing login form.
Drop `/api` prefix in login form's `axios.post` call, since `/api` is
part of the baseURL.
Redirect to subpath on succesful authentication.
Prepend subpath to default logout url.
Fixes#12814
* Display message in desktop events list when no events exist
* Add message for when no events are found on plus view
* validating check
* activity indicator check
* clarify error message
* Improve export handling when errors occur
* Fix mobile zooming
* Handle recordings buffering
* Cleanup
* Url encode export name
* Start with actual name in input
* Fix buffering
* Camera settings view for alerts/detections
* flxes, beautifying, zone renaming, clean up
* replace underscores with spaces in zone names
* replace underscores with spaces in labels
* adds adjust_time which allows users to fix an issue with onvif authentication where time is not syncrhonized
* updated adjust_time to ignore_time_mismatch to make it clearer what this option does
* adds ignore_time_mismatch to the reference.md and adds a line about the security risk this can introduce as well as the recommendation to setup NTP for both ends.
* fix format error
* happy now linter?
* white space
* Update docs/docs/configuration/reference.md
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
---------
Co-authored-by: Stephen Butler <stephen.butler@ni.com>
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Only keep 2x detect fps frames in SHM
* Don't delete previous shm frames in output
* Catch case where images do not exist
* Ensure files are closed
* Clear out all frames when shutting down
* Correct the number of frames saved
* Simplify empty shm error handling
* Improve frame safety
* Use full resolution aspect for main camera style in history view
* Only check for offline cameras after 60s of uptime
* only call onPlaying when loadeddata is fired or after timeout
* revert to inline funcs
* Portal frigate plus alert dialog
* remove duplicated logic
* increase onplaying timeout
* Use a ref instead of a state and clear timeout in AutoUpdatingCameraImage
* default to the selected month for selectedDay
* Use buffered time instead of timeout
* Use default cursor when not editing polygons
* Revert "Use latest 5.1 ffmpeg update (#12243)"
This reverts commit 93e08688be.
* Revert "Change qsv device arg to standard hwaccel arg (#12249)"
This reverts commit 56b4a551dc.
* Use different repo for build
sed -i -e '/AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31\/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi\/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==/d' ~/.ssh/known_hosts
sed -i -e '/AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31\/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi\/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==/d' ~/.ssh/known_hosts
Use this form for support or questions for an issue with your cameras.
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
description:Visible on the System page in the Web UI
description:Visible on the System page in the Web UI. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- type:input
attributes:
label:What browser(s) are you using?
placeholder:Google Chrome 88.0.4324.150
description:>
Provide the full name and don't forget to add the version!
- type:textarea
id:config
attributes:
@@ -23,10 +39,18 @@ body:
validations:
required:true
- type:textarea
id:logs
id:frigatelogs
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
label:Relevant Frigate log output
description:Please copy and paste any relevant Frigate log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:textarea
id:go2rtclogs
attributes:
label:Relevant go2rtc log output
description:Please copy and paste any relevant go2rtc log output. Include logs before and after your exact error when possible. Logs can be viewed via the Frigate UI, Docker, or the go2rtc dashboard. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
@@ -34,7 +58,7 @@ body:
id:ffprobe
attributes:
label:FFprobe output from your camera
description:Run `ffprobe <camera_url>` and provide output below
description:Run `ffprobe <camera_url>` from within the Frigate container if possible, and provide output below
render:shell
validations:
required:true
@@ -66,17 +90,20 @@ body:
- HassOS Addon
- Docker Compose
- Docker CLI
- Proxmox via Docker
- Proxmox via TTeck Script
- Windows WSL2
validations:
required:true
- type:dropdown
id:coral
id:object-detector
attributes:
label:Coral version
label:Object Detector
options:
- USB
- PCIe
- M.2
- Dev Board
- Coral
- OpenVino
- TensorRT
- RKNN
- Other
- CPU (no coral)
validations:
@@ -98,6 +125,13 @@ body:
description:Dahua, hikvision, amcrest, reolink, etc and model number
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots of the Frigate UI's System metrics pages
description:Drag and drop for images is possible in this field. Please post screenshots of at least General and Cameras tabs.
Use this form for support or questions related to Frigate's configuration and config file.
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
description:Visible on the System page in the Web UI
description:Visible on the System page in the Web UI. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- type:textarea
@@ -23,10 +33,18 @@ body:
validations:
required:true
- type:textarea
id:logs
id:frigatelogs
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
label:Relevant Frigate log output
description:Please copy and paste any relevant Frigate log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:textarea
id:go2rtclogs
attributes:
label:Relevant go2rtc log output
description:Please copy and paste any relevant go2rtc log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
@@ -58,21 +76,37 @@ body:
- HassOS Addon
- Docker Compose
- Docker CLI
- Proxmox via Docker
- Proxmox via TTeck Script
- Windows WSL2
validations:
required:true
- type:textarea
id:docker
attributes:
label:docker-compose file or Docker CLI command
description:This will be automatically formatted into code, so no need for backticks.
render:yaml
validations:
required:true
- type:dropdown
id:coral
id:object-detector
attributes:
label:Coral version
label:Object Detector
options:
- USB
- PCIe
- M.2
- Dev Board
- Coral
- OpenVino
- TensorRT
- RKNN
- Other
- CPU (no coral)
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots of the Frigate UI's System metrics pages
description:Drag and drop or simple cut/paste is possible in this field
Use this form for support or questions related to Frigate's object detectors.
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
description:Visible on the System page in the Web UI
description:Visible on the System page in the Web UI. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- type:textarea
@@ -31,27 +41,13 @@ body:
validations:
required:true
- type:textarea
id:logs
id:frigatelogs
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
label:Relevant Frigate log output
description:Please copy and paste any relevant Frigate log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:dropdown
id:os
attributes:
label:Operating system
options:
- HassOS
- Debian
- Other Linux
- Proxmox
- UNRAID
- Windows
- Other
validations:
required:true
- type:dropdown
id:install-method
attributes:
@@ -60,21 +56,31 @@ body:
- HassOS Addon
- Docker Compose
- Docker CLI
- Proxmox via Docker
- Proxmox via TTeck Script
- Windows WSL2
validations:
required:true
- type:dropdown
id:coral
id:object-detector
attributes:
label:Coral version
label:Object Detector
options:
- USB
- PCIe
- M.2
- Dev Board
- Coral
- OpenVino
- TensorRT
- RKNN
- Other
- CPU (no coral)
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots of the Frigate UI's System metrics pages
description:Drag and drop for images is possible in this field. Please post screenshots of at least General and Cameras tabs.
Use this form for support for issues that don't fall into any specific category.
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
description:Visible on the System page in the Web UI
description:Visible on the System page in the Web UI. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- type:input
attributes:
label:What browser(s) are you using?
placeholder:Google Chrome 88.0.4324.150
description:>
Provide the full name and don't forget to add the version!
- type:textarea
id:config
attributes:
@@ -23,10 +39,18 @@ body:
validations:
required:true
- type:textarea
id:logs
id:frigatelogs
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
label:Relevant Frigate log output
description:Please copy and paste any relevant Frigate log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:textarea
id:go2rtclogs
attributes:
label:Relevant go2rtc log output
description:Please copy and paste any relevant go2rtc log output. Include logs before and after your exact error when possible. Logs can be viewed via the Frigate UI, Docker, or the go2rtc dashboard. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
@@ -34,7 +58,7 @@ body:
id:ffprobe
attributes:
label:FFprobe output from your camera
description:Run `ffprobe <camera_url>` and provide output below
description:Run `ffprobe <camera_url>` from within the Frigate container if possible, and provide output below
render:shell
validations:
required:true
@@ -44,20 +68,6 @@ body:
label:Frigate stats
description:Output from frigate's /api/stats endpoint
render:json
- type:dropdown
id:os
attributes:
label:Operating system
options:
- HassOS
- Debian
- Other Linux
- Proxmox
- UNRAID
- Windows
- Other
validations:
required:true
- type:dropdown
id:install-method
attributes:
@@ -66,17 +76,28 @@ body:
- HassOS Addon
- Docker Compose
- Docker CLI
- Proxmox via Docker
- Proxmox via TTeck Script
- Windows WSL2
validations:
required:true
- type:textarea
id:docker
attributes:
label:docker-compose file or Docker CLI command
description:This will be automatically formatted into code, so no need for backticks.
render:yaml
validations:
required:true
- type:dropdown
id:coral
id:object-detector
attributes:
label:Coral version
label:Object Detector
options:
- USB
- PCIe
- M.2
- Dev Board
- Coral
- OpenVino
- TensorRT
- RKNN
- Other
- CPU (no coral)
validations:
@@ -98,6 +119,11 @@ body:
description:Dahua, hikvision, amcrest, reolink, etc and model number
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots of the Frigate UI's System metrics pages
description:Drag and drop for images is possible in this field
Use this form to submit a support request for hardware acceleration issues.
Before submitting your support request, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
description:Visible on the System page in the Web UI
description:Visible on the System page in the Web UI. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- type:textarea
@@ -31,10 +41,18 @@ body:
validations:
required:true
- type:textarea
id:logs
id:frigatelogs
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
label:Relevant Frigate log output
description:Please copy and paste any relevant Frigate log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:textarea
id:go2rtclogs
attributes:
label:Relevant go2rtc log output
description:Please copy and paste any relevant go2rtc log output. Include logs before and after your exact error when possible. Logs can be viewed via the Frigate UI, Docker, or the go2rtc dashboard. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
@@ -42,24 +60,10 @@ body:
id:ffprobe
attributes:
label:FFprobe output from your camera
description:Run `ffprobe <camera_url>` and provide output below
description:Run `ffprobe <camera_url>` from within the Frigate container if possible, and provide output below
render:shell
validations:
required:true
- type:dropdown
id:os
attributes:
label:Operating system
options:
- HassOS
- Debian
- Other Linux
- Proxmox
- UNRAID
- Windows
- Other
validations:
required:true
- type:dropdown
id:install-method
attributes:
@@ -68,6 +72,22 @@ body:
- HassOS Addon
- Docker Compose
- Docker CLI
- Proxmox via Docker
- Proxmox via TTeck Script
- Windows WSL2
validations:
required:true
- type:dropdown
id:object-detector
attributes:
label:Object Detector
options:
- Coral
- OpenVino
- TensorRT
- RKNN
- Other
- CPU (no coral)
validations:
required:true
- type:dropdown
@@ -87,6 +107,13 @@ body:
description:Dahua, hikvision, amcrest, reolink, etc and model number
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots of the Frigate UI's System metrics pages
description:Drag and drop for images is possible in this field. Please post screenshots of at least General and Cameras tabs.
Use this form for questions you have about Frigate.
Before submitting your question, please [search the discussions][discussions], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your question has already been answered by the community.
**If you are looking for support, start a new discussion and use a support category.**
Use this form to submit a reproducible bug in Frigate or Frigate's UI.
Before submitting your bug report, please [search the discussions][discussions], look at recent open and closed [pull requests][prs], read the [official Frigate documentation][docs], and read the [Frigate FAQ][faq] pinned at the Discussion page to see if your bug has already been fixed by the developers or reported by the community.
**If you are unsure if your issue is actually a bug or not, please submit a support request first.**
description:Please verify that you've followed these steps
options:
- label:I have updated to the latest available Frigate version.
required:true
- label:I have cleared the cache of my browser.
required:true
- label:I have tried a different browser to see if it is related to my browser.
required:true
- label:I have tried reproducing the issue in [incognito mode](https://www.computerworld.com/article/1719851/how-to-go-incognito-in-chrome-firefox-safari-and-edge.html) to rule out problems with any third party extensions or plugins I have installed.
- type:textarea
id:description
attributes:
label:Describe the problem you are having
description:Provide a clear and concise description of what the bug is.
validations:
required:true
- type:textarea
id:steps
attributes:
label:Steps to reproduce
description:|
Please tell us exactly how to reproduce your issue.
Provide clear and concise step by step instructions and add code snippets if needed.
value:|
1.
2.
3.
...
validations:
required:true
- type:input
id:version
attributes:
label:Version
description:Visible on the System page in the Web UI. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- type:input
attributes:
label:In which browser(s) are you experiencing the issue with?
placeholder:Google Chrome 88.0.4324.150
description:>
Provide the full name and don't forget to add the version!
- type:textarea
id:config
attributes:
label:Frigate config file
description:This will be automatically formatted into code, so no need for backticks.
render:yaml
validations:
required:true
- type:textarea
id:docker
attributes:
label:docker-compose file or Docker CLI command
description:This will be automatically formatted into code, so no need for backticks.
render:yaml
validations:
required:true
- type:textarea
id:frigatelogs
attributes:
label:Relevant Frigate log output
description:Please copy and paste any relevant Frigate log output. Include logs before and after your exact error when possible. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:textarea
id:go2rtclogs
attributes:
label:Relevant go2rtc log output
description:Please copy and paste any relevant go2rtc log output. Include logs before and after your exact error when possible. Logs can be viewed via the Frigate UI, Docker, or the go2rtc dashboard. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:dropdown
id:os
attributes:
label:Operating system
options:
- HassOS
- Debian
- Other Linux
- Proxmox
- UNRAID
- Windows
- Other
validations:
required:true
- type:dropdown
id:install-method
attributes:
label:Install method
options:
- HassOS Addon
- Docker Compose
- Docker CLI
validations:
required:true
- type:dropdown
id:network
attributes:
label:Network connection
options:
- Wired
- Wireless
- Mixed
validations:
required:true
- type:input
id:camera
attributes:
label:Camera make and model
description:Dahua, hikvision, amcrest, reolink, etc and model number
validations:
required:true
- type:textarea
id:screenshots
attributes:
label:Screenshots of the Frigate UI's System metrics pages
description:Drag and drop for images is possible in this field. Please post screenshots of all tabs.
Change the default log level for troubleshooting purposes.
@@ -28,6 +30,18 @@ Examples of available modules are:
-`watchdog.<camera_name>`
-`ffmpeg.<camera_name>.<sorted_roles>` NOTE: All FFmpeg logs are sent as `error` level.
#### Go2RTC Logging
See [the go2rtc docs](https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#module-log) for logging configuration
```yaml
go2rtc:
streams:
# ...
log:
exec:trace
```
### `environment_vars`
This section can be used to set environment variables for those unable to modify the environment of the container (ie. within HassOS)
@@ -41,7 +55,7 @@ environment_vars:
### `database`
Event and recording information is managed in a sqlite database at `/config/frigate.db`. If that database is deleted, recordings will be orphaned and will need to be cleaned up manually. They also won't show up in the Media Browser within Home Assistant.
Tracked object and recording information is managed in a sqlite database at `/config/frigate.db`. If that database is deleted, recordings will be orphaned and will need to be cleaned up manually. They also won't show up in the Media Browser within Home Assistant.
If you are storing your database on a network share (SMB, NFS, etc), you may get a `database is locked` error message on startup. You can customize the location of the database in the config if necessary.
@@ -80,6 +94,14 @@ model:
input_pixel_format:"bgr"
```
#### `labelmap`
:::warning
If the labelmap is customized then the labels used for alerts will need to be adjusted as well. See [alert labels](../configuration/review.md#restricting-alerts-to-specific-labels) for more info.
:::
The labelmap can be customized to your needs. A common reason to do this is to combine multiple object types that are easily confused when you don't need to be as granular such as car/truck. By default, truck is renamed to car because they are often confused. You cannot add new object types, but you can change the names of existing objects in the model.
```yaml
@@ -106,45 +128,89 @@ Some labels have special handling and modifications can disable functionality.
:::
## Custom ffmpeg build
## Network Configuration
Included with Frigate is a build of ffmpeg that works for the vast majority of users. However, there exists some hardware setups which have incompatibilities with the included build. In this case, a docker volume mapping can be used to overwrite the included ffmpeg build with an ffmpeg build that works for your specific hardware setup.
Changes to Frigate's internal network configuration can be made by bind mounting nginx.conf into the container. For example:
IPv6 is disabled by default, to enable IPv6 listen.gotmpl needs to be bind mounted with IPv6 enabled. For example:
```
{{ if not .enabled }}
# intended for external traffic, protected by auth
listen 8971;
{{ else }}
# intended for external traffic, protected by auth
listen 8971 ssl;
# intended for internal traffic, not protected by auth
listen 5000;
```
becomes
```
{{ if not .enabled }}
# intended for external traffic, protected by auth
listen [::]:8971 ipv6only=off;
{{ else }}
# intended for external traffic, protected by auth
listen [::]:8971 ipv6only=off ssl;
# intended for internal traffic, not protected by auth
listen [::]:5000 ipv6only=off;
```
## Custom Dependencies
### Custom ffmpeg build
Included with Frigate is a build of ffmpeg that works for the vast majority of users. However, there exists some hardware setups which have incompatibilities with the included build. In this case, statically built `ffmpeg` and `ffprobe` binaries can be placed in `/config/custom-ffmpeg/bin` for Frigate to use.
To do this:
1. Download your ffmpeg build and uncompress to a folder on the host (let's use `/home/appdata/frigate/custom-ffmpeg` for this example).
2. Update your docker-compose or docker CLI to include `'/home/appdata/frigate/custom-ffmpeg':'/usr/lib/btbn-ffmpeg':'ro'` in the volume mappings.
3. Restart Frigate and the custom version will be used if the mapping was done correctly.
1. Download your ffmpeg build and uncompress it to the `/config/custom-ffmpeg` folder. Verify that both the `ffmpeg` and `ffprobe` binaries are located in `/config/custom-ffmpeg/bin`.
2. Update the `ffmpeg.path` in your Frigate config to `/config/custom-ffmpeg`.
3. Restart Frigate and the custom version will be used if the steps above were done correctly.
NOTE: The folder that is mapped from the host needs to be the folder that contains `/bin`. So if the full structure is `/home/appdata/frigate/custom-ffmpeg/bin/ffmpeg` then `/home/appdata/frigate/custom-ffmpeg` needs to be mapped to `/usr/lib/btbn-ffmpeg`.
## Custom go2rtc version
### Custom go2rtc version
Frigate currently includes go2rtc v1.9.2, there may be certain cases where you want to run a different version of go2rtc.
To do this:
1. Download the go2rtc build to the /config folder.
1. Download the go2rtc build to the `/config` folder.
2. Rename the build to `go2rtc`.
3. Give `go2rtc` execute permission.
4. Restart Frigate and the custom version will be used, you can verify by checking go2rtc logs.
## Validating your config.yaml file updates
## Validating your config.yml file updates
When frigate starts up, it checks whether your config file is valid, and if it is not, the process exits. To minimize interruptions when updating your config, you have three options -- you can edit the config via the WebUI which has built in validation, use the config API, or you can validate on the command line using the frigate docker container.
### Via API
Frigate can accept a new configuration file as JSON at the `/config/save` endpoint. When updating the config this way, Frigate will validate the config before saving it, and return a `400` if the config is not valid.
Frigate can accept a new configuration file as JSON at the `/api/config/save` endpoint. When updating the config this way, Frigate will validate the config before saving it, and return a `400` if the config is not valid.
```bash
curl -X POST http://frigate_host:5000/config/save -d @config.json
curl -X POST http://frigate_host:5000/api/config/save -d @config.json
```
if you'd like you can use your yaml config directly by using [`yq`](https://github.com/mikefarah/yq) to convert it to json:
```bash
yq r -j config.yml | curl -X POST http://frigate_host:5000/config/save -d @-
yq r -j config.yml | curl -X POST http://frigate_host:5000/api/config/save -d @-
```
### Via Command Line
@@ -157,5 +223,5 @@ docker run \
--entrypoint python3 \
ghcr.io/blakeblackshear/frigate:stable \
-u -m frigate \
--validate_config
--validate-config
```
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.