* 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
* Manually set current time when selecting event
* Make it clear which camera has no preview
* Make it clear which camera has no preview
* Format camera name
* Show number of items instead of dot
* Don't call error when connection has been closed on purpose
* Use motion icon for motion
* Show text on tablets as well
* Update segment even when number of active objects is the same
* add score to frigate+ chip
* Add support for selecting zones
* Add api support for filtering on zones
* Adjust UI
* Update filtering logic
* Clean up
* Only set stalled error when player is visible
* Show activity indicator before live player starts playing
* remove comment
* keep gradients when still image is showing
* fix chips
* red dot and outline
* intentionally handle queues during shutdown and carefully manage shutdown order
* more carefully manage shutdown to avoid threadlocks
* use debug for signal logging
* ensure disabled cameras dont break shutdown
* typo
* Allow deleting failed in progress exports
* Fix comparison and preview retrieval
* Fix stretching of event cards
* Reset edit state when group changes
* Allow specifying group
* Update authentication.md to note port 8080 vs 5000
* Update docs/docs/configuration/authentication.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* implement self signed cert and monitor/reload
* move go2rtc upstream to separate file
* add directory for ACME challenges
* make certsync more resilient
* add TLS docs
* add jwt secret info to docs
When serving Frigate at a subpath, the paths that show in the URL bar
and that wind up in your browser history are anchored at the web root.
I.e. you go to `https://example.com/frigate/`, it changes to
`https://example.com/`, and clicking around works as expected, but the
`frigate/` prefix is gone.
It's confusing if you don't know that the URL's are entirely virtual.
Also, your browser history is useless, since the URL's point to e.g.
`https://example.com/#kitchen`, but visiting that URL will not hit
`/frigate/` at all.
Most of the work is already done. Nginx injects javascript to set
`window.baseURL` based on the X-Ingress-Path header. This change passes
that to BrowserRouter, so that it'll be part of the URL's it shows.
Fixes#4526
* 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
* Update config version to be stored inside of the config
* Don't remove items from list when navigating back
* Use video api instead of webps for live current hour filmstrip
* Check that the config file is writable
* Show camera name when camera is offline
* Show camera name when offline
* Cleanup
* Add support for TensorRT v10 (multiple api calls have changed)
* Remove unnecessary size check in TensorRT v10 block
* Refactor to reduce code duplication
* Fix wrong function name in new _get_binding_dtype function and only return input check (not assertion) in new _binding_is_input function
* Add space around TRT_VERSION variable assignment (=) to respect linting
* More linting fix
* Update frigate/detectors/plugins/tensorrt.py
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* More linting
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Minimal config in installation guide (#11339)
+ Adds a subsection to the installation guide that mentions the requirement for a minimal config to start Frigate successfully.
+ Adds a warning not to proceed any further into the guide without this valid config
* Add spacing between Markdown title and text
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Remove subsection in favour of exclusively adding a warning
* Adjust wording for the warning
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Respect classname when no preview is found
* Don't check for go2rtc info if camera is not restramed
* Show error banner when playback fails
* Add keyboard shortcut for fullscreen
* Set max width on the problems area in status bar and use unique keys so they do not duplicate
* Fix possibly missing media info
* Show full row of items on tablet
* remove debugging logic
* 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 to frigate+ documentation
Added shortcuts + advices for objects partly out of frame and the 'difficult' tag.
* Update docs/docs/plus/improving_model.md
* Update docs/docs/plus/improving_model.md
---------
Co-authored-by: Blake Blackshear <blake.blackshear@gmail.com>
* use prettier-plugin-tailwindcss to keep class names organized
* use prettierrc file to ensure formatting on save works with vscode
* classname reorder with prettier-plugin-tailwindcss
* Ensure camera activity is up to date
* Persist playback rate between cameras
* Add setting for default playback rate
* Fix audio events saving image
* Formatting
* Use select component
* Fix external events saving
* Only show relevant labels
* Set on recordings view too
* Fix video control width on motion page
* use overlay so player state is maintained between camera switches
* use overlay so player state is maintained between camera switches
* mobile only
* Formatting
* Use higher amount
* Only wrap when needed
* add scrollbar on ptz presets dropdown
* use cn function for class names throughout
* Revert "add scrollbar on ptz presets dropdown"
This reverts commit 2cee93dc3e.
* add ability to parse and upload image from recording to frigate+
* Show dialog with current frame to be uploaded
* Implement uploading image in frontend
* Cleanup
* Update title
* revamp object debug view
* fix vite
* remove console log
* don't display empty fields
* clarify masks as motion masks
* add descriptions
* color and spacing
* add sub_label to camera activity
* add sub_label to type
* rename to debug
* Better scaling for frigate+ dialog and thumbnails
* Always show live objects chip
* Handle sub labels
* Send sub label correctly
* Formatting
* Undo vite
* Update web/src/utils/iconUtil.tsx
* Send camera state to dispatcher
* Fix logic
* Cleanup
* Send camera activitiy in on connect
* Support reading initial camera state
* Fix key
* Formatting
* Sorting
* base recordings and live views off of actual video resolution
* don't set for jsmpeg
* reset when changing main cam
* rename
* Only use resolution for main camera
* fix lint
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Adjust number of ticks to have consistent X axes
* Revert "Adjust number of ticks to have consistent X axes"
This reverts commit 941e296750.
* set rotate instead
* Update docs for alerts and event review
* Add docs for camera groups
* Update reference config with new config values
* Remove env variable requirement
* Add to sidebar
* Update snapshot docs
* add zones example to detection docs too
* Generalize the zone docs
* Don't request preview for current hour and fix content type
* Send before / after on messages
* Send before / after for end
* Handle specific cases
* remove log
* Fix update type
* Make no thumb slider height dynamic
* Use existing switch component
* Use existing switch component for general filter content
* Show message when no reordings found for time
* Don't show while scrubbing
* Fix key error
* Fix background color for controls on motion page
* Save review thumbs in dedicated folder
* Create exports table
* Save exports to DB and save thumbnail for export
* Save full frame always
* Fix rounded corners
* Save exports that are in progress
* No need to remove spaces
* Reorganize apis to use IDs
* Use new apis for frontend
* Get video playback working
* Fix deleting and renaming
* Import existing exports to DB
* Implement downloading
* Formatting
* initial working konva
* working multi polygons
* multi zones
* clean up
* new zone dialog
* clean up
* relative coordinates and colors
* fix color order
* better motion tuner
* objects for zones
* progress
* merge dev
* edit pane
* motion and object masks
* filtering
* add objects and unsaved to type
* motion tuner, edit controls, tooltips
* object and motion edit panes
* polygon item component, switch color, object form, hover cards
* working zone edit pane
* working motion masks
* object masks and deletion of all types
* use FilterSwitch
* motion tuner fixes and tweaks
* clean up
* tweaks
* spaces in camera name
* tweaks
* allow dragging of points while drawing polygon
* turn off editing mode when switching camera
* limit interpolated coordinates and use crosshair cursor
* padding
* fix tooltip trigger for icons
* konva tweaks
* consolidate
* fix top menu items on mobile
* Add verification for required zone names
* Make global object masks use relative coordinates as well
* Ensure event image cleanup doesn't fail
* Return passed value
* Make buttons consistent and have hover state
* Use switch for camera to be consistent
* Use everywhere and remove unused
* Use green for normal stats color
* Fix logs copy icon
* Remove warnings from pydantic serialization
* Ignore warnings
* Fix wsdl resolution
* Fix loading on switch
* Update web deps
* Fix tooltip on storage page
* Always show video controls even when zooming
* Get video controls working when video is paused
* Fix control hovering
* Add loading indicator to logs tab
* Show metrics correctly when hovering graph
* Show loading indicators for previews on recordings page
* Remove vitest update
* remove unused
* Make volume props optional
Relying on importlib to resolve the path to the wsdl directory is more
robust, since it traverses all site-packages directories, that are part
of the PYTHONPATH.
* 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
* fix warning
* Improve event switching speed
* Fix icon colors
* Only show frigate+ page when frigate+ is enabled
* Add link from reecordings to live as well
* Update review maintainer to save events when ongoing
* Handle previews for in progress review items
* Reset DB items in app
* Handle in progress review items
* Scroll back down to selected event item
* Handle undefined end time
* Formatting
* remove unused
* Make export handles have full resolution
* reduce preview thumbnail props
* fix missing return
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Clarify Proxmox LXC instructions
There is a lot of confusing information online. This provides some
simple general guidelines to help people get started.
* Update docs/docs/frigate/installation.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Reference #5773 instead of #1111
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Cleanup live activity indicators for cameras
* Rename to reviews and redirect events to reviews
* Use reviews
* Remove plural
* Simplify recordings view
* Adjust icon
* Handle zones and masks as relative coords
* Ensure that zone coords are saved as relative
* Get motion mask working with relative coordinates
* Rewrite object mask to use relative coordinates as well
* Formatting
* Fix always trying to convert
* fix mask logic
* Adjust outline and structure to match designs
* More color changes to fit design
* Properly parse go2rtc severity
* Add ability to filter by clicking item
* Implement sheet / drawer for viewing full log
* Add toast and filtering
* Add links to docs when specific log items are selected
* Cleanup log seeking
* Use header in layout
* Fix mobile menus
* Fix safari theme
* Hide rings
* Theme adjustment
* Implement camera graphs
* Cleanup naming
* Cleanup rendering
* Cleanup spacing
* Fix audio name
* theme updates to match design corretly
* Mobile color fixes
* Mobile color fixes
* Rename graph
* Use separate view for general metrics
* Get storage graph formatted
* Show camera storage usage
* Cleanup ticks
* Remove storage link
* Add icons and frigate logo
* Undo
* Use optimistic state for metrics toggle
* Use optimistic state and skeletons for loading
* Reorganize stats and show graphs in system metrics
* Break apart all cpu / mem graphs
* Auto update stats
* Show camera graphs
* Get system graphs working for inference time
* Update stats every 10 seconds, keeping the last 10 minutes
* Use types for thresholds
* Use keys api
* Break system metrics into different pages
* Add dialog for viewing and copying vainfo
* remove unused for now
* Formatting
* Make tooltip match theme
* Make betters color in light mode
* Include gpu
* Make scaling consistent
* Fix name
* address feedback
* Redesign log page to have formatting
* Support other log types as well
* fix border
* Support log data format
* Only load necessary logs
* Load incrementally
* Cleanup
* Cleanup
* Render all items
* avoid flashing scroll to bottom
* Fix not listening at first
* Always ensure logLine is defined
* Group logs based on timestamp
* Formatting
* remove scrollbar
* Don't repull when there are no items to pull
* Add newline to end
* Fix log lines missing
* typo
* Add button to link to recordings from camera live view
* Change name and show text on both
* Use history button next to back button
* Match designs better
* Only update frame time if it is older
* Support manual detections as review items
* Don't handle api detections in recordings
* Store recordings for manual events
* Show frigate features in bottom sheet on mobile
* Use flex wrap on mobile so the ptz icons are not cutoff
* Support opening pip from live view
* Remove unused
* Separate settings items so layout is more consistent
* Convert settings on mobile to drawer
* Fix sizing on mobile and make scrollable
* remove padding
* Use dialog instead of popover
* Don't focus on first item
* Simpler tab fix
* fix wrong segments when changing filters in motion only mode
* pixel alignment, better outlines, and more figma matching
* fix stats from crashing the ui
* separate layout from aspect classes
* check for invalid value
* avoid undefined classnames
* Use timerange everywhere and ensure recordings has last 24 hours
* Pause recording when selecting timeline
* Fix loading layout
* Fix updating current time not always working
* Simplify dynamic video player
* Clean up desktop sizing
* Fix current hour
* Make padding consistent
* Improve spacing for extra cameras
* Make back button consistent
* Fix preview player not jumping to correct time
* Dont use useEffect due to preview changing
* Simplify
* Fix transition
* Fix drawer not being scrollable
* Fix margin
* Use 2 columns for large mobile devices
* Move padding
* Add review summary to mobile calendar
* Make header spacing consistent between pages
* remove red
* Only show back button text on desktop
* Add mobile camera drawer to separate component
* Use bottom sheet for export on mobile
* Add intermediary mobile bottom sheet
* fix filter
* Fix mobile layout jumping
* Fix desktop vertical camera view
* Fix horizontal camera list
* Add overlay instead of using same button for timeline exports
* Don't use native hls for now
* Fix export bottom sheet
* Fix scrolling
* Simplify checks
* Adjust hls compat approach
* Fix events shadow
* Make corners consistent
* Make corners consistent
* fix max drawer height
* Use separate buttons for export control
* Add icons
* Fix list views
* Fix new items to review
* bottom padding on bottom sheets
* bottom padding on bottom sheets
* Add dialog to export recordings
* Add export dialog functionality
* Add ability to name exports
* Add ability to choose custom time range on timeline
* Add ability to choose custom time range on timeline
* Add custom time selection
* Make hot keys optional for typing name of export
* Tweaks to dialog
* Tweaks to dialog
* round corners more
* Final tweaks
* Use full width top bar
* Make each item in review filter group optional
* Remove export creation from export page
* Consolidate packages and fix opening recording from event
* Use common type for time range
* Move timeline to separate component
* Add events list view to recordings view
* Fix loading of images
* Fix incorrect labels
* use overlay state for selected timeline type
* Fix up for mobile view for now
* replace overlay state
* fix comparison
* remove unused
* handle motion timestamps with ranges
* check for overlaps when checking segment for events
* rename motion color vars to significant_motion for consistency
* safelist significant_motion
* rename vars for clarity and use timeout instead of interval
* Use green chip instead of dimming to show that item has been reviewed
* Redesign log page to use similar style to events
* Use icon only in mobile
* Remove unused
* Move controls to separate component and make features configurable
* Allow playback on motion screen
* Simplify layout
* Fix seeking
* Fix playback
* fix preview scrubbing
* Fix player controls visibility
* Use opacity for both dark and light mode
* add function to get visible timeline duration
* Don't show minimap when minimap bounds exceed timeline area
* when minimap is hidden, only scroll timeline when needed
* observe only when not showing minimap
* no need to duplicate observer
* fix out of order param
* timeline utils hook props
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* implement summary timeline
* implement summary timeline
* merge dev
* conditionally attach listeners only when dragging
* set up listeners with a ref
* Fix selected items text
* Use action icons from design and fix spacing
* Fix icons for live grid
* Fix viewed select api
* Setup default theme as system
* Make conig editor respect system theme
* Fix plus submission dialog
* Different layout for portrait recordings
* Fix now preview found pulsing
* Fix bug with uneven milliseconds
* Improve consistency of video scaling
* Update previews on the hour
* Allow tap to toggle controls so zooming still works
* Use hash location insteaad of state for live camera view
* Add typing
* Show skeleton until video players finishes loading
* Clean up android logic
* Ensure mobile view video is consistent
* Cleanup
* Only show when not scrubbing
* Don't use loading
* Start preview at correct time too
* Fix react race condition
* Be wait for seek to show video player
* use a single source of truth for scrubbing
* simplify controller state
* Cleanup scrubbing logic
* Apply same logic to mobile
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Use dynamic imports to reduce initial load times
Remove videojs
* Convert to using hls.js instead of videojs
* Improve mobile controls experience
* Cleanup
* Ensure playback rate stays teh same when source changes
* Use webp for latest camera image
* Switch to hls.js on error
* Don't rerun error if hls already tried
* Fix error checking
* also check for media decode error to fallback to HLS
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* 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
* initial try
* add birdseye
* remove vite
* cleanup
* memoize
* remove console
* ensure birdseye is actually enabled in config
* birdseye first in select list and fix jsmpeg player size
* add minor ticks to timeline
* don't display motion events on veritcal bars on motion timeline
* color tweaks and spacing on config editor
* pad start and end of timeline to ensure handlebar is always visible
* 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
* Cleanup review items
* Fix spacing
* Fix -1 text
* Cleanup scroll
* Show activity indicator when review items are null
* Show no preview text when not found
* Add padding to buttons
* Simplify comparisons
* rename docker image tags in configuration docs for jetson, add correct image in sample codeblocks, fix typo in 'come'
The image names/tags for Jetson instructions were incorrect. I have updated the docs to point to the correct images.
* revert jetson docs phrasing to properly refer to Jetpack docker images
* Increase duration of alerts and detections
* Add key
* Fix cancel button
* Fix motion review when switching days
* Add reset buttons and make calendar apply immediately
* Adjust apis for motion and audio activity
* Write review thumbs as webp and reduce size
* Cleanup to use new preview video player
* Make it so motion persists the selected time
* Don't jump when player first starts
* Get autoplay working right
* Break preview only video player out
* Simplify
* Load after current preview changes
* Clear out waiting for seek state
* Start at correct time of hour
* Fix layout for tall video
* Fix switching between different hours
* Simplify book keeping of different time ranges
* Rewrite player to handle changing of previews outside of video player
* Simplify switching between cameras
* Fix previews causing cameras to not load
* Simplify listeners
* Always clear existing listener
* Save numbers as int instead of string
* Fix hover logic
* Fix delay for new alerts
* Fixup dialog and marking item as uploaded
* Make preview progress larger and easier to grab
* Allow hovering to control preview on desktop
* Add dialog for creating new camera group
* Support adding of camera groups and dynamically updating the config
* Support deleting and edit existing camera groups
* Don't show separator if user has no groups
* Formatting
* fix background
* Use different cursor for dragging preview
* Improve filters UI and add audio labels
* Use switch and adjust colors
* Disable chromecast button and remove dimming
* Change marked reviewed text
* mark items as reviewed when they are opened
* Update api to use json and add button to mark all as reviewed
* fix api so last24 hours has its own review summary
* fix sidebar spacing
* formatting
* Bug fixes
* Make motion activity respect filters
* dynamically manage aspect ratio
* full size
* always use camera aspect ratio for mobile
* no need for different handling for pano cams
* don't set aspect ratio on fullscreen
* Refactor activity api to send motion and audio data
* Prepare for using motion data timeline
* Get working
* reduce to 0
* fix
* Formatting
* fix typing
* add motion data to timelines and allow motion cameas to be selectable
* Fix tests
* cleanup
* Fix not loading preview when changing hours
* Split recording view for mobile and desktop and get desktop working
* Get stuff working well
* Handle onclick for video
* Fix camera grid
* set onclick
* Adjust remaining summary items when items are marked as reviewed
* Add api for filtering and show correct number when filtering
* Fix default group config
* Update review summary when data is reloaded
* Fix quick items not getting reviewed
* Add camera group config
* Add saving of camera group selection
* Implement camera groups in config and live view
* Fix warnings
* Add tooltips to camera group items on desktop
* Add camera groups to the filters for events
* Fix tooltips and group selection
* Cleanup
* adjust segment math
* simplify interp and fix math
* fix math and update dependency
* push debug
* Revert "push debug"
This reverts commit 07c171b341.
* Break detection grid into separate function
* Implement backward preview jump and jump lockout
* ensure lockout is engaged when starting
* Add preview only mode to make loading more efficeint
* remove scrollbar and match gaps/margins with live view
* Rewrite dynamic player to use html video for preview and fix grid gaps
* consistent check for aspect ratio for tall cameras
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Get live camera view working
* Get ptz working
* Add button for ptz presets
* Add camera feature buttons
* Add button for camera audio
* Cleanup
* Cleanup mobile live
* Only use landscape check on mobile
* Implement context menu for batch operations and implement apis
* reduce preview calculations on rerenders
* Add button to mark above items as reviewed
* Use context menu for mark as reviewed
* Cleanup
* adapt timeline to mobile
* remove unused
* tweaks
* pointer cursor on segments
* make full recordings view look better on mobile
* explicitly set timeline width for md
* button positioning
* Simplify nav components
* Allow ability to choose live layout on mobile
* Combine event views
* Undo vite
* Fix autoplay
* Remove import
* Show filters on mobile view
* Spacing
* Don't separate properties
* make event bars clickable
* outline and scroll when segment is clicked
* match outline colors to event type
* hover thumbnails
* make event bars clickable
* outline and scroll when segment is clicked
* match outline colors to event type
* hover thumbnails
* fix merge from rebase
* remove minimap opacity classes
* live player outline colors
* safelist shadow classes
* Update installation.md
According to the v13 release the config.yml mapping needs to be the entire directory and not only the config.yml file
* Update docs/docs/frigate/installation.md
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
Customizing only the detector model path results in the warning
"Customizing more than a detector model path is unsupported." because
`{} is not {}` evaluates to True
* don't load metadata until image has loaded
* correct class name and remove lazy loading pkg
* try refs
* hook
* don't load metadata until image has loaded
* correct class name and remove lazy loading pkg
* try refs
* hook
* don't show chips and date when image is loading
* add skeleton and change observer threshold
* remove debug
* use skeleton for live view too
* old activity indicator looks better on live
* fix gradients and lazy load with skeleton
* fading effects
* Use a rolling average of iou to determine if an object is no longer stationary
* Use different box variation to designate when an object is stationary on debug
* In progress
* Use average of boxes instead of average of iou
* Update frigate/track/norfair_tracker.py
Co-authored-by: Blake Blackshear <blake@frigate.video>
---------
Co-authored-by: Blake Blackshear <blake@frigate.video>
* Convert preview player to use html5
* Cleanup
* Increase padding and use constant
* Firefox doesn't support high fps either
* Cleanup
* no need to special case firefox
* Update cameras.md
Tapo C220 added to ONVIF PTZ camera recommendations
* Update docs/docs/configuration/cameras.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Use zoom space id in Onvif RelativeMove setup (#9859)
* use zoom space id in onvif relativemove setup
* better handle cases when zooming is disabled
* Fix birdseye camera comparison (#9887)
* Format (#9889)
* use first onvif profile with ptz config
* Use zoom space id in Onvif RelativeMove setup (#9859)
* use zoom space id in onvif relativemove setup
* better handle cases when zooming is disabled
* use first onvif profile with ptz config
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* scroll minimap to keep it in view
* remove console log
* change ref
* rebase to dev
* rebase to dev
* rebase to dev
* fix history flexbox and live extra scrollbar
* remove extra class
* Reduce redundant code and don't pull new items when marking as reviewed
* Chunk recording times and run playback
* fix overwriting existing data
* Implement scrubbing
* Show refresh button
* Remove old history
* Fix race condition
* Cleanup handling
* Remove console
* Cleanups and fix safari preview speed on iOS
* Clarifying comment
* Update paging when loading page with no items
* Use chip for detections and show all the time
* make time ago dense
* Be smarter about paging empty
* Fix elevation
* Add ui for events
* Display data for review items
* Use preview thumbnails
* Implement paging
* Show icons for what was detected
* Show progress bar on preview thumbnail
* Hide the overlays on hover and update reviewed status
* Dim previews that have been reviewed
* Show audio icons
* Cleanup preview thumb player
* initial implementation of review timeline
* Use timeout for hover playback
* Break apart mobile and desktop views
* Show icons for sub labels
* autoplay first video on mobile
* Only show the last 24 hours by default
* Rework scrolling to fix nested scrolling
* Final scroll cleanups
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
* Add review to database
* Create main manager for review segments
* Upsert and maintain review segments
* Update logic for adding new segments
* Add api
* Support deleting review segments on recording cleanup
* Add field for alert labels
* Formatting
* Logic fixes
* Save 16:9 thumbnail for review segment
* Ensure that crop is 16:9
* Fix non detected objects being added
* Only include true positives
* Add sub labels to data
* initial implementation of review timeline
* hooks
* clean up and comments
* reorganize components
* colors and tweaks
* remove touch events for now
* remove touch events for now
* fix vite config
* use unix timestamps everywhere
* fix corner rounding
* comparison
* use ReviewSegment type
* update mock review event generator
* severity type enum
* remove testing code
* Add config pub / sub pattern
* remove recording from feature metrics
* remove audio and feature metrics
* Check for updates from all cameras
* remove birdseye from camera metrics
* remove motion and detection camera metrics
* Ensure that all processes are stopped
* Stop communicators
* Detections
* Cleanup video output queue
* Use select for time sensitive polls
* Use ipc instead of tcp
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
* Move safari function
* Use webrtc for safari
* Use taller aspect ratio for tall thumbnails
* Simplify thumbnail sizing
* Use correct aspect ratio on all devices
* show images for troubleshooting
* more debug and try max space action
* fixes
* oops
* maximize first
* mount build volume for docker use
* moved to shared setup and cleanup
* remove temp branch
* remove rocm for master
* Don't show gif until event is over and fix aspect
* Be more efficient about updating events
* ensure previews are sorted
* Don't show live view when window is not visible
* Move debug camera to separate view
* Improve jpg loading
* Ensure still is updated on player live finish
* Don't reload when window not visible
* Only disconnect instead of full remove
* Use start time instead of event over to determine gif
* Docs: Fix and clarify which /dev/video devices to use with Raspberry Pi
* Update docs/docs/configuration/hardware_acceleration.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/hardware_acceleration.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Revise VSCode hostname info in docs
* Fix misplaced backtick
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* 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>
* Break out live page
* Improving layouts and add chip component
* Improve default camera player sizing
* Improve live updating
* Cleanup and fit figma
* Use fixed height
* Masonry layout
* Fix stuff
* Don't force heights
* Adjust scaling
* Cleanup
* remove sidebar (#9731)
* remove sidebar
* keep sidebar on mobile for now and add icons
* Fix revalidation
* Cleanup
* Cleanup width
* Add chips for activity on cameras
* Remove dashboard from header
* Use Inter font (#9735)
* Show still image when no activity is occurring
* remove unused search params
* add playing check for webrtc
* Don't use grid at all for single column
* Fix height on mobile
* a few style updates to better match figma (#9745)
* Remove active objects when they become stationary
* Move to sidebar only and make settings separate component
* Fix layout
* Animate visibility of chips
* Sidebar is full screen
* Fix tall aspect ratio cameras
* Fix complicated aspect logic
* remove
* Adjust thumbnail aspect and add text
* margin on single column layout
* Smaller event thumb text
* Simplify basic image view
* Only show the red dot when camera is recording
* Improve typing for camera toggles
* animate chips with react-transition-group (#9763)
* don't flash when going to still image
* revalidate
* tooltips and active tracking outline (#9766)
* tooltips
* fix tooltip provider and add active tracking outline
* remove unused icon
* remove figma comment
* Get live mode working for jsmpeg
* add small gradient below timeago on event thumbnails (#9767)
* Create live mode hook and make sure jsmpeg can be used
* Enforce env var
* Use print
* Remove unstable
* Add tooltips to thumbnails
* Put back vite
* Format
* Update web/src/components/player/JSMpegPlayer.tsx
---------
Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
Co-authored-by: Blake Blackshear <blake@frigate.video>
* Show toast instead of text for success and errors
* Show correct times
* Start playing next hour when current hour ends
* Fix refreshing camera image
* Fix timeline
* 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
* Add timeline graph component
* Add more custom colors and improve graph
* Add api and data
* Fix data sorting
* Add graph to timeline
* Only show timeline for selected hour
* Make data full range
* Break apart mobile and desktop timeline views
* Set aspect ratio for player correctly
* more modest default width
* Add timeline item card
* Get video player to fit
* get layout going
* More work on youtube view
* Get video scaling working
* Better dialog sizes
* Show all timelines for day
* Add full day of timelines
* Improve hooks
* Fix previews
* Separate mobile and desktop views and don't rerender
* cleanup
* Optimizations and improvements
* make preview dates more efficient
* Remove seekbar and use timeline as seekbar
* Improve background and scrubbing
* Move history card view to separate view and create timeline view
* Get custom time scrubber working
* Add back nav
* Show timeline bounding boxes
* Implement seeking limiter
* Use browser history to allow back button to close timeline viewer
* Fix mobile timeline and add more icons for detections
* Play when item is initially visible
* Add filter popover
* Add api filter hook and use UI with filtering
* Get history filtering working for cameras and labels
* Allow filtering on detail level
* Save timeline entries for api events
* reset
* fix width
* Fix mobile event timeago
* Reduce preview playback rate for safari browser
* Fix dashboard buttons
* Update recent events correctly
* Fix opening page on icon toggle
* Fix video player remote playback check
* fix history image
* Add sticky headers to history page
* Fix iOS empty frame
* reduce duplicate items and improve time format
* Organize data more effictively and ensure data is not overwritten
* Use icon to indicate preview
* Use constant aspect ratio for review grid
* Add infinite scrolling
* Don't have horizontal scrolling
* Handle autoplay for mobile
* Load more efficiently
* Add support for review grid
* Cleanup reloading on focus
* Adjust timeline api to include metadata and before
* Be more efficient about getting info
* Adjust to new data format
* Cleanup types
* Cleanup text
* Transition to history
* Cleanup
* remove old web implementations
* Cleanup
* Write a low resolution low fps stream from decoded frames (#8673)
* Generate low res low fps previews for recordings viewer
* Make sure previews end on the hour
* Fix durations and decrase keyframe interval to ensure smooth scrubbing
* Ensure minimized resolution is compatible with yuv
* Add ability to configure preview quality
* Fix
* Clean up previews more efficiently
* Use iterator
* Ensure final frame in preview is not duplicated
* initial react/ts framework
* fix gitignore glob excluding ts files
* ignore folders in web-new
* SWRConfig changes for swr 2.x
* use frigateConfig type in websocket handlers
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Generate low res low fps previews for recordings viewer
* Make sure previews end on the hour
* Fix durations and decrase keyframe interval to ensure smooth scrubbing
* Ensure minimized resolution is compatible with yuv
* Add ability to configure preview quality
* Fix
* Clean up previews more efficiently
* Use iterator
* revamp plus docs
* consolidate label guidance
* add some common complete config examples
* clarify zone presence
* bottom center example of mask
* update recommended hardware
* update nav
* update getting started
* add openvino example
* explain why we track stationary objects
* move false positive guide to config folder
* fix link
* update record and parked car guide
* tweaks
* Add glossary with commonly used terms for frigate
* Link back to full docs pages
* Add glossary to sidebar
* Clarifications and grammar fixes
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* update docs to clarify variable substitution in go2rtc
* update to complet
* cleanup spacing
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Included caution about Snapcraft docker issues.
* Accepted format suggestion from NickM-27
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* 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>
* Add endpoint to restart Frigate
The only means of restarting Frigate remotely is to issue
a restart topic on the server's websocket. It's
convenient to also expose this capability via HTTP endpoint.
* Add new section to API docs
* Remove extra line
* prevent estimate clipping when autotracking
* use unclipped estimate in distance function only
* remove autotracking velocity changes
* publish on init
* Initial draft for filtering Frigate+ submits in frontend
* Hide filter when Frigate+ is not enabled
* Update http.py
* Revert "Update http.py"
This reverts commit fa292682d6.
* optimize motion and velocity estimation
* change recommended fps and fix config validate
* remove unneeded var
* process at most 3 objects per second
* fix test
* 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
* zoom in/out in search for lost objects
* predicted box should not be empty
* clean up and update zoom logic
* only zoom if enabled
* more cleanup
* check for valid velocity when zooming
* only try absolute zoom in if obj area has changed
* zoom logic
* don't enqueue lost object zoom if already at limit
* don't disable motion boxes during ptz moves
* velocity threshold based on move coefficients
* fix area zoom logic
* disable debug zoom
* don't process objects if ptz moving
* recalc with exponent
* change exponent
* remove lost object zooming
* increase distance threshold for stationary object
* increase distance threshold constant
* only zoom out if nonzero
* camera name in all debug logging
* add camera name to debug logging
* camera variable name consistency
* update calibration behavior and docs
* docs and better zooming
* more sensible target values
* docs wording
* fix velocity threshold variable
* zooming tweaks and remove iou for current objects
* debug and docs
* get valid velocity
* include zero
* additional debug statements
* add zoom hysteresis
* zoom on initial move if relative
* only update target box if we actually zoom
* merge dev
* use getattr instead of get
* increase distance threshold
* reverse logic
* get_camera_status after preset move to store zoom
* final tweaks and docs
* use constants and catch possible debug exception
* adjust zoom factor exponent
* don't run motion estimation when calling preset
* adjust dimension threshold
* use numpy for velocity estimate calcs
* more numpy conversion
* fix numpy shapes
* numpy zeros dimension
* more zoom out conditions
* fix velocity bug
* ensure init has been called in debug view
* ensure onvif init if enabling by mqtt
* change default hysteresis values
* recalc relative zoom value
* zoom out value
* try to zoom when object isn't moving
* try zoom when tracked object is not moving
* don't try to zoom every time
* negate zoom out condition when needed
* hysteresis constants for absolute zooming
* update zoom conditions
* don't recalc target box on zoom only
* zoom out if above area threshold
* don't print zooming debug for stationary obj
* revamp zooming to use area moving average
* zooming tweaks and expose property
* limit zoom with max target box
* use calibration to determine zoom levels
* zoom logic fix
* docs
* add tapo c200 camera
* fix initial absolute zoom
* small zoom logic fix
* better invalid velocity checks
* fix test
* really fix test this time
* [CHANGE] More resilient and slightly faster PTZ
* Make "Check Black" happy.
* Make "check black" happier
* Remove unused named exception
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Smarter Regions
* Formatting
* Cleanup
* Fix motion region checking logic
* Add database table and migration for regions
* Update region grid on startup
* Revert init delay change
* Fix mypy
* Move object related functions to util
* Remove unused
* Fix tests
* Remove log
* Update the region daily at 2
* Fix logic
* Formatting
* Initialize grid before starting processing frames
* Move back to creating grid in main process
* Formatting
* Fixes
* Formating
* Fix region check
* Accept all but true
* Use regions grid for startup scan
* Add clarifying comment
* Fix new grid requests
* Add tests
* Delete stale region grids from DB
* fix queues not emptying fully by changing gets to a blocking call with short timeout
* add extra error/warning messages when there's a possibility of missing recording segments
* Show ongoing events separately
* Separate to separate event function
* Change icon type
* Hide in progress when date range search occurs
* Collapse in progress when filtering
* Fix event overlay
* Make tooltip more clear
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Refactor media source handling in MsePlayer.js and Birdseye.jsx to support ManagedMediaSource
* lint
* Update docs to reflect iOS supporting mse
---------
Co-authored-by: Sergey Krashevich <svk@svk.su>
* CenterFocusString icon
* Add CenterFocusString to multiselect
* Rename CenterFocusString.jsx
* Rename icon and make it smaller
* Rename icon
* Fix lint and use icon
for speech
* remove unused vars
* Remove unused import
* Update api.md
* Update api.md
* Added filter option for min/max score for event to API function /events
* Added filter for submitted events
* Update http.py
* Add attribute item to timeline
* Add face icon
* Add support for other icons
* Cleanup
* Ensure attributes are only updated once
* don't show _ in attributes
* don't zoom if camera doesn't support it
* basic zooming
* make zooming configurable
* zooming docs
* optional zooming in camera status
* Use absolute instead of relative zooming
* increase edge threshold
* zoom considering object area
* bugfixes
* catch onvif zooming errors
* relative zooming option for dahua/amcrest cams
* docs
* docs
* don't make small movements
* remove old logger statement
* fix small movements
* use enum in config for zooming
* fix formatting
* empty move queue first
* clear tracked object before waiting for stop
* use velocity estimation for movements
* docs updates
* add tests
* typos
* recalc every 50 moves
* adjust zoom based on estimate box if calibrated
* tweaks for fast objects and large movements
* use real time for calibration and add info logging
* docs updates
* remove area scale
* Add example video to docs
* zooming font header size the same as the others
* log an error if a ptz doesn't report a MoveStatus
* debug logging for onvif service capabilities
* ensure camera supports ONVIF MoveStatus
* Add args to ignore audio and only process keyframes
* Add timelapse args to config
* Update docs
* Formatting
* Fix spacing
* Fix formatting
* add example of math for pts
* Add capability to link directly to an event ID in the web UI
* Move event ID to searchParams, add View All button
* Use searchParams inside eventsFetcher
* add note about network bandwidth permissions
* Update default net int
* Set default network interfaces to empty
* Don't read interfaces if none are set
* Formatting
* Add stderr output
* Reduce database queries to necessary labels
* Set columns for other queries
* skip creating model instances
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Refactor Calendar component to update month details only when year or month changes
* Update web/src/components/Calendar.jsx
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* 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
Setting cache-to=compression=zstd causes the resulting user-pulled image
to have zstd-compressed layers, which are not compatible with docker
prior to 23.0. Ubuntu 20.04 still ships with docker 20.10, which yields
`Error processing tar file` when pulling these images.
Renaming the jetpack cache images is my way of clearing the cache of the
prior zstd layers, and it clarifies the convention I used for the other
cache images in which there is one cache per base image/job, not per
target/step. We don't need to delete the non-jetson cache images because
they haven't been rebuilt since zstd was enabled.
* fixup! Split independent builds into parallel jobs
* Combine caches within steps of same job
* Remove Maintain Cache workflow
Now that we're caching to ghcr instead of gha, we don't have to worry
about gha's cache eviction after 7 days/10 GB.
* Factor out common setup steps
* Re-order
* Split independent builds into parallel jobs
* Cache jetson builds
* Use zstd compression
* Switch from gha cache to registry cache
A CI run (four images cached with mode-max) populates the cache with 295
cache entries totalling 23.44 GB. This exceeds gha's 10GB limit, causing
trashing. Try with a registry instead.
* Enable manual CI runs
* Run ffmpeg sub process & video_properties as async
* Run recording cleanup in the main process
* More cleanup
* Use inter process communication to write recordings into the DB
* Formatting
* 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
* Store camera labels in dict and other optimizations
* Add max on timeout so it is at least 60
* Ensure db timeout is at least 60
* Update list once a day to ensure new labels are cleaned up
* Formatting
* Insert recordings as bulk instead of individually.
* Fix
* Refactor event and timeline cleanup
* Remove unused
* Send mqtt message when audio is detected
* Fix value
* Add audio topics to mqtt docs and add mqtt headers
* Use existing standard for values
* Update mqtt.md
* Add auto configuration for height, width and fps in detect role
* Add auto-configuration for detect width, height, and fps for input roles with detect in the CameraConfig class in config.py
* Refactor code to retrieve video properties from input stream in CameraConfig class and add optional parameter to retrieve video duration in get_video_properties function
* format
* Set default detect dimensions to 1280x720 and update DetectConfig to use the defaults
* Revert "Set default detect dimensions to 1280x720 and update DetectConfig to use the defaults"
This reverts commit a1aed0414d.
* Add default detect dimensions if autoconfiguration failed and log a warning message
* fix warn message spelling on frigate/config.py
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Ensure detect height and width are not None before using them in camera configuration
* docs: initial commit
* rename streamInfo to stream_info
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Apply suggestions from code review
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs
* handle case then get_video_properties returns 0x0 dimension
* Set detect resolution based on stream properties if available, else apply default values
* Update FrigateConfig to set default values for stream_info if resolution detection fails
* Update camera detection dimensions based on stream information if available
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Add limit to event query for fetching latest event with specified label and camera name
* Refactor the label_thumbnail function in frigate/http.py to simplify the event_query logic and improve code readability
* Support setting sub label scores via API
* Update docs
* Update docs
* Formatting
* Throw error when score is outside expected bounds
* Fix / cleanup
* Refactor event label and sub-label score display in Events.jsx to include the event label and sub-label percentage
* Revert "Refactor event label and sub-label score display in Events.jsx to include the event label and sub-label percentage"
This reverts commit 87c23adf1e.
* Refactor event label and sub label score display in Events component
* much improved motion estimation and tracking
* docs updates
* move ptz specific mp values to ptz_metrics dict
* only check if moving at frame time
* pass full dict instead of individual values
* only check camera status if autotracking enabled
* a more sensible sleep time
* Only check camera status if preparing for a move
* only update tracked obj position when ptz stopped
* both pantilt *and* zoom should be idle
* check more often after moving
* No need to move pan and tilt separately
* Basic functionality
* Threaded motion estimator
* Revert "Threaded motion estimator"
This reverts commit 3171801607.
* Don't detect motion when ptz is moving
* fix motion logic
* fix mypy error
* Add threaded queue for movement for slower ptzs
* Move queues per camera
* Move autotracker start to app.py
* iou value for tracked object
* mqtt callback
* tracked object should be initially motionless
* only draw thicker box if autotracking is enabled
* Init if enabled when initially disabled in config
* Fix init
* Thread names
* Always use motion estimator
* docs
* clarify fov support
* remove size ratio
* use mp event instead of value for ptz status
* update autotrack at half fps
* fix merge conflict
* fix event type for mypy
* clean up
* Clean up
* remove unused code
* merge conflict fix
* docs: update link to object_detectors page
* Update docs/docs/configuration/autotracking.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* clarify wording
* pass actual instances directly
* default return preset
* fix type
* Error message when onvif init fails
* disable autotracking if onvif init fails
* disable autotracking if onvif init fails
* ptz module
* verify required_zones in config
* update util after dev merge
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update ha_network_storage.md to make it clear which config file
* Update docs/docs/guides/ha_network_storage.md with relative url
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Refactor video player div class names in Birdseye.jsx to be more responsive
* let's JSMpegPlayer dont takes up the entire screen
* Update Birdseye.jsx
* Add useState hook and toggle button for dynamic width adjustment and refactor code for readability in env.js and Birdseye.jsx
* fix stupid typo
* Swapped the controls around
* Remove useless comments
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add button styles to the Birdseye component's toggle width button
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* 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
* Add functionality to update YAML config file with PUT request in HTTP endpoint
* Refactor copying of text to clipboard with Clipboard API and fallback to document.execCommand('copy') in CameraMap.jsx file
* Update YAML file from URL query parameters in frigate/http.py and add functionality to save motion masks, zones, and object masks in CameraMap.jsx
* formatting
* fix merging fuckup
* Refactor camera zone coordinate saving to use single query parameter per zone in CameraMap.jsx
* remove unnecessary print statements in util.py
* Refactor update_yaml_file function to separate the logic for updating YAML data into a new function update_yaml().
* fix merge errors
* Refactor code to improve error handling and add dependencies to useEffect hooks
* reduce contention on frame_queue
don't check if the queue is full, just attempt to add the frame
in a non-blocking manner, and then if it fails, skip it
* don't check if the frame queue is empty, just try and get from it
* Update frigate/video.py
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Refactored queues to use faster_fifo instead of mp.Queue
* Refactored LimitedQueue to include a counter for the number of items in the queue and updated put and get methods to use the counter
* Refactor app.py and util.py to use a custom Queue implementation called LQueue instead of the existing Queue
* Refactor put and get methods in LimitedQueue to handle queue size and blocking behavior more efficiently
* code format
* remove code from other branch (merging fuckup)
* 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
* Reduce framerate before downscaling
It is cheaper to drop frames and downscale those that remain than it is
to downscale all frames and then drop some of them. This is achieved
with the filter chain `-cv fps=FPS,scale=W:H`, and perhaps was the
original intention. The plain `-r` and `-s` flags do not execute in
order though - they each put themselves at the *end* of the filterchain,
so `-r FPS -s WxH` actually applies the scale filter first, and then the
rate filter.
This fix can halve the CPU used by the detect ffmpeg process.
* Bring back hard rate limits
* Force birdseye cameras into standard aspect ratios
* Clarify comment
* Formatting
* Actually use the calculated aspect ratio when building the layout
* Fix Y aspect
* Force canvas into known aspect ratio as well
* Save canvas size and don't recalculate
* Cache coefficients that are used for different size layouts
* Further optimize calculations to not be done multiple times
* Add audio process PID to the list of processes and log the start of the audio process
* Update audio process PID key in processes dictionary to "audioDetector" instead of "audio".
* Scale layout up to max size after it has been calculated
* Limit portrait cameras to taking up 2 rows
* Fix bug
* Fix birdsye not removing cameras once objects are no longer visible
* Fix lint
* Initial audio classification model implementation
* fix mypy
* Keep audio labelmap local
* Cleanup
* Start adding config for audio
* Add the detector
* Add audio detection process keypoints
* Build out base config
* Load labelmap correctly
* Fix config bugs
* Start audio process
* Fix startup issues
* Try to cleanup restarting
* Add ffmpeg input args
* Get audio detection working
* Save event to db
* End events if not heard for 30 seconds
* Use not heard config
* Stop ffmpeg when shutting down
* Fixes
* End events correctly
* Use api instead of event queue to save audio events
* Get events working
* Close threads when stop event is sent
* remove unused
* Only start audio process if at least one camera is enabled
* Add const for float
* Cleanup labelmap
* Add audio icon in frontend
* Add ability to toggle audio with mqtt
* Set initial audio value
* Fix audio enabling
* Close logpipe
* Isort
* Formatting
* Fix web tests
* Fix web tests
* Handle cases where args are a string
* Remove log
* Cleanup process close
* Use correct field
* Simplify if statement
* Use var for localhost
* Add audio detectors docs
* Add restream docs to mention audio detection
* Add full config docs
* Fix links to other docs
---------
Co-authored-by: Jason Hunter <hunterjm@gmail.com>
* Clean up docs given HA addon storage support
* Add guide for using HA network storage
* Add to sidebar
* Specify that media type needs to be used
* Link to storage guide from install docs
* Instruct users to store DB in /config
* Update ha_network_storage.md
* Recommend that data is moved or deleted
* 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
* use a different method for blur and contrast to reduce CPU
* blur with radius instead
* use faster interpolation for motion
* improve contrast based on averages
* increase default threshold to 30
* ensure mask is applied after contrast improvement
* update opencv
* update benchmark script
* Show overlay when hovering on timeline box
* Make it work with mobile too
* Fix lint
* Fix ratio
* Update web/src/components/TimelineEventOverlay.jsx
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Show overlay when hovering on timeline box
* Make it work with mobile too
* Fix lint
* Fix ratio
* Remove label and make overlay respect selected theme
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* configurable ffmpeg timeout
* configurable ffmpeg healthcheck interval
rename timeout to healthcheck_interval
only grab config value once
* configurable ffmpeg retry interval
rename healthcheck_interval to retry_interval
* add retry_interval to docs
- update retry_interval text in config.py
* optimize frame-per-second calculations
FPS is never calculated over differing periods for even given
counter. By only storing timestamps within the period that is
used, we avoid having to iterate 1000 entries every time it's
re-calculated (multiple times per second). 1000 entries would
normally only be needed if something is running at 100fps. A
more common speed - anywhere from 5 to 30fps, only needs 50
to 300 entries.
This isn't a huge improvement in the grand scheme, but when motion
detection is disabled, it takes nearly as much time in a flamegraph
as actually transferring the video frame.
* fix python checks
* Load labels dynamically to include custom events and audio, do not include attribute labels
* Formatting
* Fix sorting
* Also filter tracked object list on camera page
* isort
* Don't fail before load
* pass attribute labels as attributes
* add label attrs to events and snapshots
* incorporate area of license_plate and face into snapshot selection
* populate sublabels for cars with logos
* Make camera recordings mover asynchronous
* Formatting
* Move to using cv2 instead of external ffmpeg process
* Use ffprobe if cv2 failed
* Formatting
* Fix bad access
* Formatting
* Update frigate/record/maintainer.py
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Update name of caller
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Prefer horizontal layout to vertical
* Rewrite birdseye to use aspect ratios instead of resolutions as layout configurator
* Improve layout with slightly larger than 16:9 cameras
* Remove manual 2 camera layout
* Lint
* Remove log
* Refactor date and time initialization in Export.jsx to use local timezone
* Update error message to include specific reason for failure in Export.jsx
* Update faqs.md
I spent hours trying to figure this out and if this could be included in some way that would potentially help someone out there.
* Update docs/docs/troubleshooting/faqs.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/troubleshooting/faqs.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update faqs.md
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* "Refactor storage stats calculation to use powers of 2 for more accurate values"
* replace 1000000 to 2^20
* Refactor storage unit size display to use binary prefixes
This commit updates the display of storage unit sizes in both the camera storage stats and the Storage component in the web UI to use binary prefixes (MiB and GiB) instead of decimal prefixes (MB and GB). This provides more accurate and consistent representation of storage sizes
* added timepicker as children to calendar
* new timepicker component
* Add timepicker
* new timePicker component
* timepicker as calendar child
* hover:border and rounded
* adjusted width
* complete rework
* more code comments
* memorization
* preselect hover, transition
* numberOfDaysSelected has minimum of 1
* prefill hours when component mounts
* persist hours when component mount
* accommodate for the new timePicker
* add reset state
* scroll into view
* reuse before, after
* fix LastDayInRange when a time is selected
* do not add hours if before is zero
* use hours instead of days
* useeffect to reset hour. check timerange before scroll
* scroll to last element, not first
* refactor existing motion detector
* implement and use cnt bgsub
* pass fps to motion detector
* create a simplified motion detector
* lightning detection
* update default motion config
* lint imports
* use estimated boxes for regions
* use improved motion detector
* update test
* use a different strategy for clustering motion and object boxes
* increase alpha during calibration
* simplify object consolidation
* add some reasonable constraints to the estimated box
* adjust cluster boundary to 10%
* refactor
* add disabled debug code
* fix variable scope
* Add option for network bandwidth and only calculate if enabled
* Don't show network bandwidth in system stats page if not enabled
* Formatting
* Hide other rows as well
* Add docs
* Add config options for AMD and Intel GPU stats
* Fix stats access
* Update docs
* Use correct bool syntax
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Update pull_request.yml
* Add temporary table for deletion and use pagination to process recordings in chunks for deletion of recordings with missing files
* move RecordingsToDelete class to models.py
* recording cleanup: bugfixes
* Update cleanup.py
* improve log message in cleanup.py
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add date and time inputs to Export component and ensure end time is larger than start time
* Update web/src/routes/Export.jsx
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Objects need to be in zones multiple times to be considered present in the zone
* Add a field to configure inertia per zone
* Formatting
* Use correct default method
* Clarify zone presence behavior
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
---------
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Calculate possible layout
* Working in ideal conditions
* Fix issues with different heights
* Remove logs
* Optimally handle cameras that don't match the canvas aspect ratio
* Make sure to copy so list is not overwritten
* Remove unused import
* Remove try catch
* Optimize layout for low amount of cameras
* Try to scale frames up if not enough space is used
* Add function to get physical interfaces for bandwidth calculation in get_bandwidth_stats() function
* Add telemetry configuration option for enabled network interfaces, with default values for monitoring bandwidth stats for camera ffmpeg processes, go2rtc, and object detectors. Also add support for FrigateConfig in set_bandwidth_stats function to get bandwidth stats for specified network interfaces
* Enable auto vacuums
* Enable auto vacuum
* Fix separator
* Fix separator and remove incorrect log
* Limit to 1 row since that is all that is used
* Add index on camera + segment_size
* Formatting
* Increase timeout and cache_size
* Set DB mode to NORMAL synchronous level
* Formatting
* Vacuum every 2 weeks
* Remove fstring
* Use string
* Use consts
* 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.
* Update go2rtc to 1.3.0
* Increment to 1.3.1
* Increment to 1.3.2
* Update webrtc player to match latest
* Update version to 1.4.0
* Update mse player
* Update birdseye mse player
* remove logs
* Update docs to link to new version
* Final web lint fixes
* Update versions
* Move to events package
* Improve handling of external events
* Handle external events in the event queue
* Pass in event processor
* Check event json
* Fix json parsing and change defaults
* Fix snapshot saving
* Hide % score when not available
* Correct docs and add json example
* Save event png db
* Adjust image
* Formatting
* Add catch for failure ending event
* Add init to modules
* Fix naming
* Formatting
* Fix http creation
* fix test
* Change to PUT and include response in docs
* Add ability to set bounding box locations in snapshot
* Support multiple box annotations
* Cleanup docs example response
Co-authored-by: Blake Blackshear <blake@frigate.video>
* Cleanup docs wording
Co-authored-by: Blake Blackshear <blake@frigate.video>
* Store full frame for thumbnail
* Formatting
* Set thumbnail height to 175
* Formatting
---------
Co-authored-by: Blake Blackshear <blake@frigate.video>
* Add network bandwidth usage to System table display in System.jsx and update get_bandwidth_stats function in util.py to include go2rtc processes
* black...
* Add network bandwidth usage to system table in web UI and improve regex in get_bandwidth_stats function to include frigate detector processes
* black...
* Update bandwidth calculation to include both incoming and outgoing traffic
* black:(
* Add Deepstack detector plugin with configurable API URL, timeout, and API key
* Update DeepStack plugin to recognize 'truck' as 'car' for label indexing
* Add debug logging to DeepStack plugin for better monitoring and troubleshooting
* Refactor DeepStack label loading from file to use merged labelmap
* Black format
* add documentation draft
* fix link to codeproject website
* Apply suggestions from code review
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Do not show the loader during recordings api call
Showing the loader during the recordings API call will rerender the recordings list and rerenders the video player
* Fix defauting to 0 seekSeconds if recordings results are missings
* nvml
* black...black...black...
* small fix for avoid errors on strange GPUs and old drivers
* fix type errors
* fix type errors
* fix unittest process crash
where the tests for tests?..
* it's impossible to mock low-level library
* fix double % for other GPU types
* remove space before gpu statistic values
* test refactor process stats
* Update util.py
* bugfix
* black formatting
* add missing processes field to StatsTrackingTypes class
* fix python checks and tests...
* use psutil for calcilate cpu utilization on get_cpu_stats
* black...black...black...
* add cpu average
* calculate statiscts for logger process
* add P-ID for other processes in System.jsx
* Apply suggestions from code review
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* make page beautiful again :)
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* avoid executing external tools by using Python's built-in os module to interact with the filesystem directly
* Refactor recording cleanup script to use os module instead of subprocess
* black format util.py
* Ooooops
* Refactor get_cpu_stats() to properly identify recording process
* Organize event table to be more generalized
* Add appropriate fields to data
* Move tracked object logic to own function
* Add source type to event queue
* rename enum
* Fix types that are used in webUI
* remove redundant
* Formatting
* fix typing
* Rename enum
* Add option to sort cameras inside Birdseye
* Make default order to be sorted alphabetically
* Add docs for sorting cameras
* Update index.md for cameras
* Remove irelevant comments
* Move recordings management to own process and ensure db multiprocess access
* remove reference to old threads
* Cleanup directory remover
* Mypy fixes
* Fix mypy
* Add support back for setting record via MQTT and WS
* Formatting
* Fix rebase issue
* Add support for ptz commands via websocket
* Fix startup issues
* Fix bugs
* Set config manually
* Add more commands
* Add presets
* Add zooming
* Fixes
* Set name
* Cleanup
* Add ability to set presets from UI
* Add ability to set preset from UI
* Cleanup for errors
* Ui tweaks
* Add visual design for pan / tilt
* Add pan/tilt support
* Support zooming
* Try to set wsdl
* Fix duplicate logs
* Catch auth errors
* Don't init onvif for disabled cameras
* Fix layout sizing
* Don't comment out
* Fix formatting
* Add ability to control camera with keyboard shortcuts
* Disallow user selection
* Fix mobile pressing
* Remove logs
* Substitute onvif password
* Add ptz controls ot birdseye
* Put wsdl back
* Add padding
* Formatting
* Catch onvif error
* Optimize layout for mobile and web
* Place ptz controls next to birdseye view in large layout
* Fix pt support
* Center text titles
* Update tests
* Update docs
* Write camera docs for PTZ
* Add MQTT docs for PTZ
* Add ptz info docs for http
* Fix test
* Make half width when full screen
* Fix preset panel logic
* Fix parsing
* Update mqtt.md
* Catch preset error
* Add onvif example to docs
* Remove template example from main camera docs
* 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
* Create timeline table
* Fix indexes
* Add other fields
* Adjust schema to be less descriptive
* Handle timeline queue from tracked object data
* Setup timeline queue in events
* Add source id for index
* Add other fields
* Fixes
* Formatting
* Store better data
* Add api with filtering
* Setup basic UI for timeline in events
* Cleanups
* Add recordings snapshot url
* Start working on timeline ui
* Add tooltip with info
* Improve icons
* Fix start time with clip
* Move player logic back to clips
* Make box in timeline relative coordinates
* Make region relative
* Get box overlay working
* Remove overlay when playing again
* Add disclaimer when selecting overlay points
* Add docs for new apis
* Fix mobile
* Fix docs
* Change color of bottom center box
* Fix vscode formatting
* adding instructions for Nginix reverse proxy
adding an example of subdomain reverse proxy for nginx
* Update docs/docs/guides/reverse_proxy.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/guides/reverse_proxy.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* add some descriptions for steps
add more information on each of the reverse proxy sections.
* cleanup
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Added instruction to install Frigate on QNAP NAS.
* Incorporate PR review suggestions, minor text changes
* Remove LIBVA_DRIVER_NAME from sample command.
* Add docs for getting intel_gpu_top to work without privileged mode
* Apply suggestions from code review
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Address more review comments
* Rename sections
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
It is an alias for the python float type, and got deprecated in 1.20 and
was removed in 1.24. The rest of the project already uses float32
(single), so I believe this is also correct here, as opposed to float64
(double).
When home assistant mate the default values change last year it broke the original blueprint when it looked for the camera fps as no default was coded. I've been maintaining a fixed version with new features in hunterjms absence. Yesterday the mods split the thread so this is the latest post and blueprint now.
* Improve documentation on web rtc
* Update docs/docs/configuration/live.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Specify code type in markdown
* Match docker config
* Add indication that there are other attributes
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Update Unifi specific configuration
Provided more specific detail on what modifications are required to the Unifi camera rtsps links: change to rtspx to remove authentication and remove the ?enableSrtp to function on TCP. Provided a sample configuration for a Unifi camera.
* Update docs/docs/configuration/camera_specific.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/camera_specific.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Comment out timezone as it should not be set with None if copied
* Use "" for ffmpeg: so it does not appear as comment
* Add example to timezone setting
* Fixed extension of config file
Using frigate.yml as the config file for the HA addon gives a validation error, the same contents in frigate.yaml work.
* More accurate description of config file handling.
* Update docs/docs/configuration/index.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
It supports the same entrypoints, given that tflite is a small cut-out
of the big tensorflow picture.
This patch was created for downstream usage in nixpkgs, where we don't
have the tflite python package, but do have the full tensorflow package.
* Add docs for time / date styling
* Convert 12hour time format option to enum
* Change option in web
* Add docs with examples
* Fix errors in docs
* Fix mismatched names
* Upgrade s6-overlay from 3.1.3.0 to 3.1.4.0
* Add go2rtc healthcheck service
Also don't make go2rtc exits cause the container to fail.
* Reword healthcheck message
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add timeout to go2rtc healthcheck
* Update healthcheck message
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Give additional time for go2rtc start/restart
* Fix typo
* Avoid creating go2rtc config multiple times
* Fix healthcheck not starting
* Fix sleep
* Fix more hidden logs
* Decrease time window and use curl's timeout flag
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Yolov7-640, Yolov7-320, Yolov7x-640 and Yolov7x-320 models got added to the download_yolo.sh script that gets used as part of generating tensorrt models so they can now be generated
* Initial commit that adds YOLOv5 and YOLOv8 support for OpenVINO detector
* Fixed double inference bug with YOLOv5 and YOLOv8
* Modified documentation to mention YOLOv5 and YOLOv8
* Changes to pass lint checks
* Change minimum threshold to improve model performance
* Fix link
* Clean up YOLO post-processing
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add ability to GPU device to be automatically detected when multiple exist
* Add logging info
* Fix access
* Fix
* Formatting
* Fix path of device
* Use log error instead of raise
* Remove log which could apply to other caess
* Set default value
* rework logic and support auto gpu selection for encoding gpu as well
* dont wait so long for queues
* implement stop methods for comms
* set the detection events on exit and return early from processing
* handle the stop event in the broadcast threads
* short circuit the detection process exit code if it already exited
* some logging for stats thread
* just keep the log process alive 1 second after the last log message
* ensure the multiprocessing queues are emptied and closed
* Update frigate/log.py
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update frigate/log.py
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* mypy fixes
---------
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Initial commit to enable Yolox models with OpenVINO in Frigate
* Fix ModelEnumtType import error in openvino.py
* Initial edit of the docs to include verbage about yolox
* Initial edit of the docs to include verbage about yolox
* Elaborate configuration and limitations in docs.
* Add capability to dynamically determine number of classes in yolox model
* Further refinements
* Removed unnecesarry comments, improved documentation, addressed PR items
* Fixed lint formatting issues
* Update live.md
Placed `ffmpeg:http_cam#audio=opus` in quotes so it doesn't appear as commented out in docs.
* Update restream.md
Placed `ffmpeg:http_cam#audio=opus` in quotes so it doesn't appear as commented out in docs.
* Restart ffmpeg if process exceeds detect fps by 10
* Update frigate/video.py
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
* spelling
---------
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
* Auto discover internal WebRTC candidate for add-on
* Write logs to stderr
* Fix port number
* Integrate with newest changes
* Update docs
* Use local variable more
* Use Python to write file, fix JSON->YAML
* Store into variable
* Update docs/docs/configuration/live.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/live.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Update docs/docs/configuration/live.md
* Update docs/docs/configuration/live.md
* Refator s6 scripts to the new format
* Remove unneeded workaround
* Update docker/rootfs/usr/local/go2rtc/create_config.py
* Migrate logging to new s6 format
* Remove more unnecessary s6 variables
* Fix prepare-log and when go2rtc is not present in config
* Restart the whole container if either Frigate or go2rtc fails
* D
* Fix service name in finish
* Fix nginx finish comment
* Restart improvements
* Fix devcontainer
* Fix format
* Update Dockerfile
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
* Improve scripts logging
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Refator s6 scripts to the new format
* Remove unneeded workaround
* Migrate logging to new s6 format
* Remove more unnecessary s6 variables
* Fix prepare-log and when go2rtc is not present in config
* Restart the whole container if either Frigate or go2rtc fails
* D
* Fix service name in finish
* Fix nginx finish comment
* Restart improvements
* Fix devcontainer
* Fix format
* Update Dockerfile
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add config fields
* Clean up camera default values
* Set recordings timezone with config if available
* Adjust for timezone config
* Cleanup setting of the timezone
* Don't fail on MSE check iPad
* Fix MSE check for birdseye
* Add docs
* Fix test
* Update readme features
* Remove RTMP setup from setup guide
* Update integration for RTSP
* Remove rtmp from faq
* Remove RTMP stream from guide
* Remove rtmp from install
* Remove rtmp from dev config
* Add in_progress parameter to /api/events to filter the results.
* Change in_progress to default to no filtering, 0 means no in progress, 1 means only in progress.
* Fix code format with black.
* Clear blank line.
* System page: various minor UI tweaks
* Be consistent with capitalisation
* Change detection start epoch to running/idle
* Remove detection start column entirely
* Show jsmpeg when restream is disabled
* Fix debug button status not showing correctly when switching cameras
* Change label to make clear only motion masks are shown
The link to the home assistant integration documentation was missing the leading slash which caused the path to be appended to the `/frigate` path of this page.
* Add missing labels to default labelmap. Fill any holes with "unknown". Remove unique labelmap for tensorrt.
* Replace "truck" with "car" on Openvino labelmap
* Add tables for ffmpeg presets and how to use them
* Make it clear that ffmepg processes may not show when nvidia-smi is run inside the container
* Add specific example of mixed input arg presets
* Update docs/docs/configuration/ffmpeg_presets.md
Co-authored-by: Nate Meyer <Nate.Devel@gmail.com>
* typos
Co-authored-by: Nate Meyer <Nate.Devel@gmail.com>
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Remove branch from URL to tensorrt_models.sh
* Reword to make TensorRT model singular
* Add note about installing nvidia docker runtime and compatible drivers
* add information about frigate plus to docs
* Update docs/docs/integrations/plus.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* check stream specific hwaccel_args for gpu stats
* fix indentation
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* check special chars for linter
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add video codec to restream config
* Add handling of encode engine and video codec
* Add test for video encoding
* Set in main configuration docs as well
* Add example to restream docs
* Put back patch
* Update recommended hardware page to reflect multiple detectors are supproted
* Shift numbers around slightly
* Update with specific range
* Update with new observed range
* Add i5 example
Co-authored-by: Nate Meyer <Nate.Devel@gmail.com>
* Should support arm32 as well
Co-authored-by: Nate Meyer <Nate.Devel@gmail.com>
* Add more detail to supported platforms
* Fix typo
* Format table
* Fix table header
* Add info about tensorrt detectors and link to docs
* Add info about tensorrt detectors and link to docs
Co-authored-by: Nate Meyer <Nate.Devel@gmail.com>
* [API] filter for favorite events
* Added /api/events filter for favorite (retain_indefinitely) events
* New Star button to filter for favorite events on the Events page
* fix python formatting
* keep Events favorite button to right side
* [API] filter for favorite events
* Added /api/events filter for favorite (retain_indefinitely) events
* New Star button to filter for favorite events on the Events page
* fix python formatting
* keep Events favorite button to right side
* Try using RTSP for restream
* Add ability to get snapshot of birdseye when birdseye restream is enabled
* Write to pipe instead of encoding mpeg1
* Write to cache instead
* Use const for location
* Formatting
* Add hardware encoding for birdseye based on ffmpeg preset
* Provide framerate
* Adjust args
* Fix order
* Delete pipe file if it exists
* Cleanup spacing
* Fix spacing
* Initial WIP dockerfile and scripts to add tensorrt support
* Add tensorRT detector
* WIP attempt to install TensorRT 8.5
* Updates to detector for cuda python library
* TensorRT Cuda library rework WIP
Does not run
* Fixes from rebase to detector factory
* Fix parsing output memory pointer
* Handle TensorRT logs with the python logger
* Use non-async interface and convert input data to float32. Detection runs without error.
* Make TensorRT a separate build from the base Frigate image.
* Add script and documentation for generating TRT Models
* Add support for TensorRT devcontainer
* Add labelmap to trt model script and docs. Cleanup of old scripts.
* Update detect to normalize input tensor using model input type
* Add config for selecting GPU. Fix Async inference. Update documentation.
* Update some CUDA libraries to clean up version warning
* Add CI stage to build TensorRT tag
* Add note in docs for image tag and model support
* Add sub filter for monaco editor
* Don't include files for unused languages
* Move necessary files and cleanup build
* Update sub filter for new location
* Still need to include default editor worker
* Fix error when model already exists
* Show All and Solo selection buttons for MultiSelect.
Similar to previous behavior of viewing events for single camera with 1 click, or All.
* Fix visual bug with MultiSelect when selecting similar named options.
eg. options like frontdoor, frontside, backdoor, etc
* fix key prop for lint
* Change MultiSelect onSolo to onSelectSingle
* cosmetic changes on MultiSelect
* Different look for SelectSingle buttons
* Show All button is aligned with the items below it, no matter the popup size
* MultiSelect ShowAll unfocused by default
* Use prewrap so vainfo output appears normalized
* Move copy button to top so user doesn't need to scroll to copy logs
* Show calculating if no value for stream bandwidth
* Write files in UTC and update folder structure to not conflict
* Add timezone arg for events summary
* Fixes for timezone in calls
* Use timezone for recording and recordings summary endpoints
* Fix sqlite parsing
* Fix sqlite parsing
* Fix recordings summary with timezone
* Fix
* Formatting
* Add pytz
* Fix default timezone
* Add note about times being displayed in localtime
* Improve timezone wording and show actual timezone
* Add alternate endpoint to cover existing usecase to avoid breaking change
* Formatting
* Catch when recording segments are not being written to cache and restart ffmpeg responsible for record
* Ensure this check is only run for role with record
* Fix formatting
* Redo recordings validator to watch segments time and restart if no segment for 30 seconds
* Formatting
* Increase wait time to 120 seconds and improve error message
* Add more config checks for record args and add test
* Formatting
* Specify output args.
* Log all services to RAM
* Gracefully handle shutdown
* Add logs route
* Remove tail
* Return logs for services
* Display log chooser with copy button
* show logs for specific services
* Clean up settings logs
* Add copy functionality to logs
* Add copy functionality to logs
* Fix merge
* Set archive count to 0
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
* Log all services to RAM
* Fix tests workdir
* Rotate logs when they reach 10MB and keep only 1 archive
* Gracefully handle shutdown
* Add note about gracetime not working
* Fix logs permission, create fake logs for devcontainer
* Remove empty line
* Update docker/rootfs/etc/services.d/frigate/run
* Fix fake Frigate shebang
* Add raw config endpoint
* Add config editor
* Add code editor
* Add error
* Add ability to copy config
* Only show the save button when code has been edited
* Update errors
* Remove debug config from system page
* Break out config saving steps to pinpoint where error occurred.
* Show correct config errors
* Switch to monaco editor
* Adjust UI colors and behavior
* Get yaml validation working
* Set success color
* Initial work for adding OpenVino detector. Not functional
* Load model and submit for inference.
Sucessfully load model and initialize OpenVino engine with either CPU or GPU as device.
Does not parse results for objects.
* Detection working with ssdlite_mobilenetv2 FP16 model
* Add OpenVIno support and model to docker image
* Add documentation for OpenVino detector configuration
* Adds support for ARM32/ARM64 and the Myriad X hardware
- Use custom-built openvino wheel for all platforms
- Add libusb build without udev for NCS2 support
* Add documentation around Intel CPU requirements and NCS2 setup
* Print all available output tensors
* Update documentation for config parameters
* Get storage output stats for each camera
* Add storage route
* Add storage route
* Add storage page
* Cleanup
* Add stats and show more storage
* Add tests for mb abbrev util fun
* Rewrite storage logic to use storage maintainer and segment sizes
* Include storage maintainer for http
* Use correct format
* Remove utils
* Fix tests
* Remove total from equation
* Multiply by 100 to get percent
* Add basic storage info
* Fix storage stats
* Fix endpoint and ui
* Fix formatting
* Add hwaccel presets
* Use hwaccel presets
* Add input arg presets
* Use input arg presets
* Make util to clean up redundant code
* Add support for output arg presets
* Add tests
* Update camera specific to use presets
* Update hwaccel to use presets
* Format files and fix tests
* Rewrite tests to test record correctly
* Move presets from string to list to avoid manually separating into a list
* Add mjpeg cuvid decoder preset
* Fix tests
* Fix comment
* Move to images specific folder
* Send error image when camera stream is not available
* Immediately set camera_fps to 0 if camera crashes
* Cache error image so it is not read from file system on each run
* Move camera fps set
* Add ffprobe endpoint
* Get ffprobe for multiple inputs
* Copy ffprobe in output
* Fix bad if statement
* Return full output of ffprobe process
* Return full output of ffprobe process
* Make ffprobe button show dialog with output and option to copy
* Add driver names to consts
* Add driver env var name
* Setup general tracking for GPU stats
* Catch RPi args as well
* Add util to get radeontop results
* Add real amd GPU stats
* Fix missed arg
* pass config
* Use only the values
* Fix vram
* Add nvidia gpu stats
* Use nvidia stats
* Add chart for gpu stats
* Format AMD with space between percent
* Get correct nvidia %
* Start to add support for intel GPU stats
* Block out RPi as util is not currently available
* Formatting
* Fix mypy
* Strip for float conversion
* Strip for float conversion
* Fix percent formatting
* Remove name from gpu map
* Add tests and fix AMD formatting
* Add nvidia gpu stats test
* Formatting
* Add intel_gpu_top for testing
* Formatting
* Handle case where hwaccel is not setup
* Formatting
* Check to remove none
* Don't use set
* Cleanup and fix types
* Handle case where args is list
* Fix mypy
* Cast to str
* Fix type checking
* Return none instead of empty
* Fix organization
* Make keys consistent
* Make gpu match style
* Get support for vainfo
* Add vainfo endpoint
* Set vainfo output in error correctly
* Remove duplicate function
* Fix errors
* Do cpu & gpu work asynchonously
* Fix async
* Fix event loop
* Fix crash
* Fix naming
* Send empty data for gpu if error occurs
* Show error if gpu stats could not be retrieved
* Fix mypy
* Fix test
* Don't use json for vainfo
* Fix cross references
* Strip unicode still
* await vainfo response
* Add gpu deps
* Formatting
* remove comments
* Use empty string
* Add vainfo back in
* Add option for mqtt config
* Setup communication layer
* Have a dispatcher which is responsible for handling and sending messages
* Move mqtt to communication
* Separate ws communications module
* Make ws client conform to communicator
* Cleanup imports
* Migrate to new dispatcher
* Clean up
* Need to set topic prefix
* Remove references to mqtt in dispatcher
* Don't start mqtt until dispatcher is subscribed
* Cleanup
* Shorten package
* Formatting
* Remove unused
* Cleanup
* Rename mqtt to ws on web
* Fix ws mypy
* Fix mypy
* Reformat
* Cleanup if/else chain
* Catch bad set commands
* fix makefile variable
* add branch for testing
* fix arm32 build
* use amd64 for web build
* install wheels in a separate layer for better parallel builds
* try build-push-action
* try using gh context
* use short sha
* cleanup
* Refactor mqtt client
* Protect callback method
* Use async to handle reconnects
* Set types and clenup
* Don't set connected until rc code is checked
* Make it easier to run the devcontainer
* Some more improvements
* Tidy up few other things
* Better name stages
* Fix CI
* Setup everything with one click
* Allow to set IMAGE_OWNER
* Change IMAGE_OWNER to IMAGE_REPO
* Fix CI with IMAGE_REPO
* Fix nodejs installation
* Test devcontainer build as part of CI
* Build devcontainer in its own job
* Fix devcontainer cli installation
* Fix devcontainer build
* Fix devcontainer build in CI again
* Enable buildkit only
* Increase coverage of devcontainer test
* Fix devcontainer start in CI
* Ensure latest version of docker compose is used
* Fix install compose action
* Disable CI stuff which does not work until we fix them
* Typing: events.py
* Remove unused variable
* Fix return Any from return statement
Not all elements from the event dict are sure to be something that can be evaluated
See e.g.: https://github.com/python/mypy/issues/5697
* Sort out Event disambiguity
There was a name collision of multiprocessing Event type and frigate events
Co-authored-by: Sebastian Englbrecht <sebastian.englbrecht@kabelmail.de>
* Start restream before detection
* Add docs explaining how to reduce connections to the camera
* Fix typos for consistency
* Add link to other part of doc for readability
* Update go2rtc to rc3
* Simplify ffmpeg / audio conversions
* Set ffmpeg bin location
* Manually set video as copied
* Run go2rtc with env vars
* Remove manual ffmpeg declaration
* Enable force_audio by default
* Fix test
* Move each camera to a separate card and show per process info
* Install top
* Add support for cpu usage stats
* Use cpu usage stats in debug
* Increase number of runs to ensure good results
* Add ffprobe endpoint
* Get ffprobe for multiple inputs
* Copy ffprobe in output
* Add fps to camera metrics
* Fix lint errors
* Update stats config
* Add ffmpeg pid
* Use grid display so more cameras can take less vertical space
* Fix hanging characters
* Only show the current detector
* Fix bad if statement
* Return full output of ffprobe process
* Return full output of ffprobe process
* Don't specify rtsp_transport
* Make ffprobe button show dialog with output and option to copy
* Adjust ffprobe api to take paths directly
* Add docs for ffprobe api
* Move existing checks to own functions
* Add config check for zone objects that are not tracked
* Add tests for config error
* Formatting
* Catch case where field is defined multiple times and add test
* Add warning for rtmp
* try a different approach for build_web
* add automatic image builds
* build web first
* try disabling log file
* chown dir
* use volume
* set cache path
* test a push
* limit to dev/master branch commits
* Refactor EdgeTPU and CPU model handling to detector submodules.
* Fix selecting the correct detection device type from the config
* Remove detector type check when creating ObjectDetectProcess
* Fixes after rebasing to 0.11
* Add init file to detector folder
* Rename to detect_api
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Add unit test for LocalObjectDetector class
* Add configuration for model inputs
Support transforming detection regions to RGB or BGR.
Support specifying the input tensor shape. The tensor shape has a standard format ["BHWC"] when handed to the detector, but can be transformed in the detector to match the model shape using the model input_tensor config.
* Add documentation for new model config parameters
* Add input tensor transpose to LocalObjectDetector
* Change the model input tensor config to use an enumeration
* Updates for model config documentation
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* ffmpeg stopped working without correct png size
When I made my own size for my picture, ffmpeg stopped working. Only with a size of 180x180 my frigate runs normal
* Adjusting language
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Consts for regex
* Add regex for camera username and password
* Redact user:pass from ffmpeg logs
* Redact ffmpeg commands
* Move common function to util
* Add tests
* Formatting
* Remove unused imports
* Fix test
* Add port to test
* Support special characters in passwords
* Add tests for special character handling
* Remove docs about not supporting special characters
* Adding clip length in s to Events View
* added function returning human readable length
* switched to date-fns functions for formatting
* fixed switched start/end time, changed length to duration
* add option enabled for each camera in config
* Simplified If-block and removed wrong Optional
* Update Docs enabling/disabling camera in config
* correct format for option
* Disabling Camera for processes, no config changes
* Describe effects of disabled cam in documentation
* change if-logic, obsolete copy, info disabled cam
* changed color to white, added top padding in disabled camera info
* changed indentation
* Pull go2rtc dependency
* Add go2rtc to local services and add to s6
* Add relay controller for go2rtc
* Add restream role
* Add restream role
* Add restream to nginx
* Add camera live source config
* Disable RTMP by default and use restream
* Use go2rtc for camera config
* Fix go2rtc move
* Start restream on frigate start
* Send restream to camera level
* Fix restream
* Make sure jsmpeg works as expected
* Make view rspect live size config
* Tweak player options to fit live view
* Adjust VideoPlayer to accept live option which disables irrelevant controls
* Add multiple options from restream live view
* Add base for webrtc option
* Setup specific restream modules
* Make mp4 the default streaming for now
* Expose 8554 for rtsp relay from go2rtc
* Formatting
* Update docs to suggest new restream method.
* Update docs to reflect restream role
* Update docs to reflect restream role
* Add webrtc player
* Improvements to webRTC
* Support webrtc
* Cleanup
* Adjust rtmp test and add restream test
* Fix tests
* Add restream tests
* Add live view docs and show different options
* Small docs tweak
* Support all stream types
* Update to beta 9 of go2rtc
* Formatting
* Make jsmpeg the default
* Support wss if made from https
* Support wss if made from https
* Use onEffect
* Set url outside onEffect
* Fix passed deps
* Update docs about required host mode
* Try memo instead
* Close websocket on changing camera
* Formatting
* Close pc connection
* Set video source to null on cleanup
* Use full path since go2rtc can't see PATH var
* Adjust audio codec to enable browser audio by default
* Cleanup stream creation
* Add restream tests
* Format tests
* Mock requests
* Adjust paths
* Move stream configs to restream
* Remove live source
* Remove live config
* Use live persistence for which view to use on each camera
* Fix live sizes
* Only use jsmpeg sizes for jsmpeg live
* Set max live size
* Remove access of live config
* Add selector for live view source in web view
* Remove RTMP from default list of roles
* Update docs
* Fix tests
* Fix docs for live view modes
* make default undefined to avoid race condition
* Wait until camera source is loaded to avoid race condition
* Fix tests
* Add config to go2rtc
* Work with config
* Set full path for config
* Set to use stun
* Check for mounted file
* Look for frigate-go2rtc
* Update docs to reflect webRTC configuration.
* Add link to go2rtc config
* Update docs to be more clear
* Update docs to be more clear
* Update format
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
* Update live docs
* Improve bash startup script
* Add option to force audio compatibility
* Formatting
* Fix mapping
* Fix broken link
* Update go2rtc version
* Get go2rtc webui working
* Add support for mse
* Remove mp4 option
* Undo changes to video player
* Update docs for new live view options
* Make separate path for mse
* Remove unused
* Remove mp4 path
* Try to get go2rtc proxy working
* Try to get go2rtc proxy working
* Remove unused callback
* Allow websocket on restrea dashboard
* Make mse default stream option
* Fix mse sizing
* don't assume roles is defined
* Remove nginx mapping to go2rtc ui
Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
* Add field and migration for segment size
* Store the segment size in db
* Add comment
* Add default
* Fix size parsing
* Include segment size in recordings endpoint
* Start adding storage maintainer
* Add storage maintainer and calculate average sizes
* Update comment
* Store segment and hour avg sizes per camera
* Formatting
* Keep track of total segment and hour averages
* Remove unused files
* Cleanup 2 hours of recordings at a time
* Formatting
* Fix bug
* Round segment size
* Cleanup some comments
* Handle case where segments are not deleted on initial run or is only retained segments
* Improve cleanup log
* Formatting
* Fix typo and improve logging
* Catch case where no recordings exist for camera
* Specifically define sort
* Handle edge case for cameras that only record part time
* Increase definition of part time recorder
* Remove warning about not supported storage based retention
* Add note about storage based retention to recording docs
* Add tests for storage maintenance calculation and cleanup
* Format tests
* Don't run for a camera with no recording segments
* Get size of file from cache
* Rework camera stats to be more efficient
* Remove total and other inefficencies
* Rewrite storage cleanup logic to be much more efficient
* Fix existing tests
* Fix bugs from tests
* Add another test
* Improve logging
* Formatting
* Set back correct loop time
* Update name
* Update comment
* Only include segments that have a nonzero size
* Catch case where camera has 0 nonzero segment durations
* Add test to cover zero bandwidth migration case
* Fix test
* Incorrect boolean logic
* Formatting
* Explicity re-define iterator
* Restructured camera specific documentation
* Make room for manufacture specific docs
* Added initial (more or less) working setup for Annke C800 camera
* Update docs/docs/configuration/camera_specific.md
remove tracking settings from example
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Moved unify and blue iris cams examples
* headline cleanup
* removed doubled headline in advanced options
* changed headline level for camera specific setup to make headlines
show up in toc
* removed specific optimizations not related to cam
* more generic phrasing
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* identation, device Id
indentation issue : "deploy" need to ne at th esame level as "image"
Device ID : use "device id" instead of "count: 1" cf : https://docs.docker.com/compose/gpu-support/
* Update docs/docs/configuration/hardware_acceleration.md
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
* Set sub label on object data if event is in progress
* Include sub_label in dict
* Don't need to set and passively get
* Formatting
* Don't expect event to be valid
* Update docs to reflect that sub label is included
* -1 so ensure indexes are correct
* Catch case of zero division
* Due to the -1, it may be negative
* Ignore source of error
The error is occurring due to a detections bounding box starting beyond the frame, this should be immediately ignored
* Formatting
* Check horizontal placement as well
* Remove original frame clamping
* Add tabs to show snapshot or thumbnail as part of event details,
even if event has a clip available.
* Add ability for TextTab to render as disabled.
* Fix VOD issues with longer keyframe intervals
* Move probe function to util
Update comment
* Use recording duration for keyFrameDurations
* Remove unused early return
* Avoid clipping first clip
* Adding configuration example for retain modes
Reading the documentation on its own didn't help me but when I found https://github.com/blakeblackshear/frigate/discussions/2447 I was able to understand how to add this to my configuration. I've added the example given in that discussion to help future readers of the page.
* Update record.md
Added suggested changes and have also added wording beneath the example mentioning the configuration can be added on a per camera basis.
Have also built on the example to add object specific retentions timings - Not sure if it would be preferred to have it all within one example to not complicate things?
Let me know your thoughts
* Update record.md
Created Object Specific Retention header
* Typo
Co-authored-by: Blake Blackshear <blake@frigate.video>
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. 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:
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: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:textarea
id:ffprobe
attributes:
label:FFprobe output from your camera
description:Run `ffprobe <camera_url>` from within the Frigate container if possible, and provide output below
render:shell
validations:
required:true
- type:textarea
id:stats
attributes:
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:
label:Install method
options:
- 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
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 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. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- 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: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. This will be automatically formatted into code, so no need for backticks.
render:shell
validations:
required:true
- type:textarea
id:stats
attributes:
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:
label:Install method
options:
- 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:object-detector
attributes:
label:Object Detector
options:
- 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. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- 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:dropdown
id:install-method
attributes:
label:Install method
options:
- 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: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. 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:
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: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:textarea
id:ffprobe
attributes:
label:FFprobe output from your camera
description:Run `ffprobe <camera_url>` from within the Frigate container if possible, and provide output below
render:shell
validations:
required:true
- type:textarea
id:stats
attributes:
label:Frigate stats
description:Output from frigate's /api/stats endpoint
render:json
- type:dropdown
id:install-method
attributes:
label:Install method
options:
- 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:object-detector
attributes:
label:Object Detector
options:
- Coral
- OpenVino
- TensorRT
- RKNN
- Other
- CPU (no coral)
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
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. Please include the full version including the build identifier (eg. 0.14.0-ea36ds1)
validations:
required:true
- 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:textarea
id:ffprobe
attributes:
label:FFprobe output from your camera
description:Run `ffprobe <camera_url>` from within the Frigate container if possible, and provide output below
render:shell
validations:
required:true
- type:dropdown
id:install-method
attributes:
label:Install method
options:
- 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
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 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.
# Warns and then closes issues and PRs that have had no activity for a specified amount of time.
# https://github.com/actions/stale
name:"Stalebot"
on:
schedule:
- cron:"0 0 * * *"# run stalebot once a day
jobs:
stale:
runs-on:ubuntu-latest
steps:
- uses:actions/stale@main
id:stale
with:
stale-issue-message:"This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
local previous_db_path="/media/frigate/frigate.db"
local new_db_dir="/config"
if [[ -f "${previous_db_path}" ]]; then
if mountpoint --quiet "${new_db_dir}"; then
# /config is a mount point, move the db
echo "[INFO] Moving db from '${previous_db_path}' to the '${new_db_dir}' dir..."
# Move all files that starts with frigate.db to the new directory
mv -vf "${previous_db_path}"* "${new_db_dir}"
else
echo "[ERROR] Trying to migrate the db path from '${previous_db_path}' to the '${new_db_dir}' dir, but '${new_db_dir}' is not a mountpoint, please mount the '${new_db_dir}' dir"
echo "[INFO] Removing stale config from last run..."
rm /dev/shm/go2rtc.yaml
fi
if [[ ! -f "/dev/shm/go2rtc.yaml" ]]; then
echo "[INFO] Preparing new go2rtc config..."
if [[ -n "${SUPERVISOR_TOKEN:-}" ]]; then
# Running as a Home Assistant add-on, infer the IP address and port
get_ip_and_port_from_supervisor
fi
python3 /usr/local/go2rtc/create_config.py
else
echo "[WARNING] Unable to remove existing go2rtc config. Changes made to your frigate config file may not be recognized. Please remove the /dev/shm/go2rtc.yaml from your docker host manually."
fi
readonly config_path="/config"
if [[ -x "${config_path}/go2rtc" ]]; then
readonly binary_path="${config_path}/go2rtc"
echo "[WARN] Using go2rtc binary from '${binary_path}' instead of the embedded one"
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.