* 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
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* 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>
* 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>
* 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 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
* 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
* 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
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>
* 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
* 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
* 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
* 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
* 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>
* 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
* 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
* 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
* 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
* 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
* 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
* 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
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
* 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>
* 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>
* 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
* 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.