Commit Graph

769 Commits

Author SHA1 Message Date
Nicolas Mowen
923d07b1a4
BUG: Event stuck if recording & snapshot disabled while in-progress (#3023)
* Fix recording getting stuck bug

* Fix typo
2022-03-30 06:33:34 -05:00
Nicolas Mowen
b1cc64d4fa
FEAT: Ability to set sub labels for specific events (#2949)
* Add sub label to model and set / delete funs

* Add migrations for sub label

* Tweaks to API and model

* Show sublabel if available

* Cleanups

* Update docs

* Show person in UI title

* Fix typo and don't fail on no json

* Transfer sub labels for in progress events

* Remove sublabel reset

* Remove person only check

* Make default null

* Update docs and formatting

* Make default null

* Make nullable in migration

* Undo null

* Update model to accept null

* Update migration to accept null

* Don't set to default values

* Remove redundant defaults and update http logic

* Only need a single route

* Enforce 20 character limit in http

* Update docs to mention 20 character limit

* Cleanup

* Separate insert and update to make sure updated values are retained when event ends

* Use insert instead of replace

* Remove redundant if and have should_update_db include clip or snapshot requirement.
2022-03-17 07:18:43 -05:00
Nicolas Mowen
0abd0627df
FEAT: Replace best jpg endpoint (#2944)
* Added object thumbnail def and made camera tracked objects use it.

* Add object snapshot def

* Remove documentation for best.jpg

* Update docs for label thumbnail and snapshot defs
2022-03-11 07:56:39 -06:00
Blake Blackshear
1c9ba11e07 swr events refactor 2022-03-11 07:49:06 -06:00
707Alex707
83481afee1 remove print statement 2022-03-10 20:02:10 -06:00
Blake Blackshear
b1a2b0cda2 make dynamic contrast optional and disable by default 2022-03-10 19:46:55 -06:00
Nicolas Mowen
006569391f
MQTT support for all objects for each camera & zone (#2908) 2022-03-10 06:03:00 -06:00
JohnMark Sill
3e07d4eddb
feat: Timeline UI (#2830) 2022-02-27 08:04:12 -06:00
Nicolas Mowen
4004048add
Ability to retain specific clips / events indefinitely (#2831) 2022-02-21 22:03:01 -06:00
Blake Blackshear
cbf26e09a4 fix for opencv changes 2022-02-21 06:51:33 -06:00
Blake Blackshear
395c16300d deregister based on max_frames setting 2022-02-18 21:18:26 -06:00
Blake Blackshear
ff19cdb773 refactor stationary config into section 2022-02-18 21:18:26 -06:00
Blake Blackshear
ebdfbfe96c update birdseye to handle stationary objects 2022-02-18 21:18:26 -06:00
Blake Blackshear
c14f986fae stop forcing detection all the way to stationary_threshold 2022-02-18 21:18:26 -06:00
Blake Blackshear
ee5b9986ad bump default stationary_threshold to 10s 2022-02-18 21:18:26 -06:00
Blake Blackshear
190f217b13 set stationary_threshold default to 5x fps 2022-02-18 21:18:26 -06:00
Blake Blackshear
e78662b924 fix the bounding box calculation position at 10 2022-02-18 21:18:26 -06:00
Blake Blackshear
5a2e395352 selectively increment position changes 2022-02-18 21:18:26 -06:00
Jason Hunter
21178613de Only send significant update once when motionless count reaches the defined threshold. 2022-02-18 21:18:26 -06:00
Jason Hunter
340be7f86d Allow download of in progress clips 2022-02-18 21:18:26 -06:00
Blake Blackshear
0ff4acd59c remove invalid warning 2022-02-18 21:18:26 -06:00
Jason Hunter
e433bec17f Add in progress events to recordings view 2022-02-18 21:18:26 -06:00
Blake Blackshear
3189467a36 update an object once per minute 2022-02-18 21:18:26 -06:00
Blake Blackshear
63536d249f signal an update when object becomes stationary 2022-02-18 21:18:26 -06:00
Blake Blackshear
3e90f3032c make stationary_threshold configurable 2022-02-18 21:18:26 -06:00
Blake Blackshear
5cff849e59 publish an update on position changes 2022-02-18 21:18:26 -06:00
Blake Blackshear
06cc7527a9 only update db entry when a stored property changes 2022-02-18 21:18:26 -06:00
Blake Blackshear
d78dc2388c increment motionless_count 2022-02-18 21:18:26 -06:00
Blake Blackshear
583912db9c allow motion based retention when detect is disabled 2022-02-18 21:18:26 -06:00
Blake Blackshear
b82d75b79e avoid rare divide by zero 2022-02-18 21:18:26 -06:00
Blake Blackshear
ac30091258 note for future 2022-02-18 21:18:26 -06:00
Blake Blackshear
de58bdcc9f improve warning for retain modes 2022-02-18 21:18:26 -06:00
Blake Blackshear
329e5f8f91 invert active_count logic 2022-02-18 21:18:26 -06:00
Blake Blackshear
4a16171f96 set has_clip to false when recordings fail 2022-02-18 21:18:26 -06:00
Blake Blackshear
f0212c2aa4 adjust error messages on ffmpeg crash 2022-02-18 21:18:26 -06:00
Blake Blackshear
7401cf2399 add stacktrace to config validation errors 2022-02-18 21:18:26 -06:00
Blake Blackshear
cf6e66c453 allow dash in camera name 2022-02-18 21:18:26 -06:00
Blake Blackshear
34fa53afcc make motion the default retain mode 2022-02-18 21:18:26 -06:00
Blake Blackshear
f512af2563 make expire interval configurable for users wanting to minimize i/o 2022-02-18 21:18:26 -06:00
Blake Blackshear
7e7d70aa5b avoid extra tracking work on stationary frames 2022-02-18 21:18:26 -06:00
Blake Blackshear
dd1cf4d2ce use iou instead of centroid 2022-02-18 21:18:26 -06:00
Blake Blackshear
e627f4e935 dont stop scanning when there are other regions 2022-02-18 21:18:26 -06:00
Blake Blackshear
c6445898ce default periodic checks to never 2022-02-18 21:18:26 -06:00
Blake Blackshear
f1ddd0e6f7 scan the frame on startup 2022-02-18 21:18:26 -06:00
Blake Blackshear
db369a5b7f require a position change to be an active object 2022-02-18 21:18:26 -06:00
Blake Blackshear
87cd618998 randomize the region multiplier for variation 2022-02-18 21:18:26 -06:00
Blake Blackshear
338e4004d4 improve method for determining position
compares the centroid to a history of bounding boxes
2022-02-18 21:18:26 -06:00
Blake Blackshear
675f21e23a if recording not on disk, delete from db and return 2022-02-18 21:18:26 -06:00
Blake Blackshear
4d2d11193f cleanup clean snapshots on event deletion too 2022-02-18 21:18:26 -06:00
Blake Blackshear
69aaf1f8e6 require url safe camera names 2022-02-18 21:18:26 -06:00
Yuriy Sannikov
6eecb6780e Run python unit tests in a github actions (#2589)
* tox tests initial commit

* run tests in the Dockerfile during the build phase

* remove local tests

Co-authored-by: YS <ys@gm.com>
2022-02-18 21:18:26 -06:00
Yuriy Sannikov
80627e4989 safe refactoring (#2552)
Co-authored-by: YS <ys@gm.com>
2022-02-18 21:18:26 -06:00
TJ Horner
9e987fdebc Change JPEG mime type (#2543) 2022-02-18 21:18:26 -06:00
Blake Blackshear
e6292c719d disable disk sync on startup 2022-02-18 21:18:26 -06:00
Blake Blackshear
2c91e7853c check for apex dir 2022-02-18 21:18:26 -06:00
Ryan McLean
1e7f196e5c #2117 change entered_zones from set to list so that they are not automatically alphabetically ordered (#2212) 2022-02-18 21:18:26 -06:00
Justin Goette
f91f4f0053 Allow for ".yaml" (#2244)
* allow for ".yaml"

* remove unused import
2022-02-18 21:18:26 -06:00
Matt Clayton
8b2622a234 Add temperature of coral tpu to telemetry mqtt message 2022-02-18 21:18:26 -06:00
Blake Blackshear
ec3c15e4a7 expire overlapping segments based on mode 2022-02-18 21:18:26 -06:00
Blake Blackshear
188b202836 store objects and motion counts in the db 2022-02-18 21:18:26 -06:00
Blake Blackshear
01e607a14e warn when retention mismatch 2022-02-18 21:18:26 -06:00
Blake Blackshear
5b164b72dc refactor segment stats logic 2022-02-18 21:18:26 -06:00
Blake Blackshear
dcf65febba switch to retain config instead of retain_days 2022-02-18 21:18:26 -06:00
Blake Blackshear
56a2d4e64d pass processed tracked objects 2022-02-18 21:18:26 -06:00
Blake Blackshear
ef214fb80a retain frame data for recording maintenance 2022-02-18 21:18:26 -06:00
Blake Blackshear
689af4ff87 sync recordings with disk once on startup 2022-02-18 21:18:26 -06:00
Blake Blackshear
4ab0927de8 no need to expire recordings every minute 2022-02-18 21:18:26 -06:00
Blake Blackshear
014e6fc909 ensure cache copies when events have ended 2022-02-18 21:18:26 -06:00
Blake Blackshear
6832575643 cleanup missing files from database once per hour 2022-02-18 21:18:26 -06:00
Blake Blackshear
07ad2d97b1 handle missing file edge case 2022-02-18 21:18:26 -06:00
Blake Blackshear
039f1a522e log error messages on vod endpoints 2022-02-18 21:18:26 -06:00
Blake Blackshear
24e2f84231 ensure duration > 0 for segments 2022-02-18 21:18:26 -06:00
Blake Blackshear
c50e9d48bf ensure stationary interval is greater than 0 2022-02-18 21:18:26 -06:00
Blake Blackshear
173eaabddf add duration to cache 2022-02-18 21:18:26 -06:00
Blake Blackshear
a748b70da1 avoid running ffprobe for each segment multiple times 2022-02-18 21:18:26 -06:00
Blake Blackshear
8eabe5dd41 warn if no wait time 2022-02-18 21:18:26 -06:00
Blake Blackshear
114415b5e1 keep 5 segments in cache 2022-02-18 21:18:26 -06:00
Blake Blackshear
ba55b5a6db better cache handling 2022-02-18 21:18:26 -06:00
Blake Blackshear
7533f2a8ab avoid proactive messages with retain_days 0 and handle first pass 2022-02-18 21:18:26 -06:00
Blake Blackshear
543a8a1712 avoid divide by zero 2022-02-18 21:18:26 -06:00
Blake Blackshear
9b23ff597c revert switch to b/w frame prep 2022-02-18 21:18:26 -06:00
Blake Blackshear
b2ce1edd5a fix default motion comment 2022-02-18 21:18:26 -06:00
Blake Blackshear
a0235b7da4 more robust cache management 2022-02-18 21:18:26 -06:00
Blake Blackshear
34bc6a6457 error handling for the recording maintainer 2022-02-18 21:18:26 -06:00
Blake Blackshear
273076e7f4 don't modify ffmpeg_cmd object 2022-02-18 21:18:26 -06:00
Blake Blackshear
b29b311e92 fix ffmpeg config for env vars 2022-02-18 21:18:26 -06:00
Blake Blackshear
5a9e82c4b0 create ffmpeg commands on startup 2022-02-18 21:18:26 -06:00
Blake Blackshear
0695bb097d revamp process clip 2022-02-18 21:18:26 -06:00
Blake Blackshear
294c79a271 no longer make motion settings dynamic 2022-02-18 21:18:26 -06:00
Blake Blackshear
e351e132f5 remove min frame height of 180 and increase contour area 2022-02-18 21:18:26 -06:00
Blake Blackshear
258215a3ae consolidate regions 2022-02-18 21:18:26 -06:00
Blake Blackshear
08ddfc100f improve contrast 2022-02-18 21:18:26 -06:00
Blake Blackshear
8ab6cba521 check for overlapping motion boxes 2022-02-18 21:18:26 -06:00
Blake Blackshear
eb16de7395 config option for stationary detection interval 2022-02-18 21:18:26 -06:00
Blake Blackshear
dde0498ed3 drop high overlap detections 2022-02-18 21:18:26 -06:00
Blake Blackshear
75c8570913 reduce detection rate for stationary objects 2022-02-18 21:18:26 -06:00
Blake Blackshear
e36099a342 improve box merging and keep tracking 2022-02-18 21:18:26 -06:00
Blake Blackshear
2f2329ba44 only save recordings when an event is in progress 2022-02-18 21:18:26 -06:00
Blake Blackshear
26ae6084ea fix rtmp again 2021-10-24 13:53:43 -05:00
Blake Blackshear
a67b8ab84d validate with runtime config (fixes #2055) 2021-10-23 08:21:15 -05:00
Blake Blackshear
4cf55ad8e2 Revert switch to mpegts format and audio default 2021-10-23 08:21:15 -05:00
Blake Blackshear
b0e0abe385 improve performance of cache loop 2021-10-23 08:21:15 -05:00
Blake Blackshear
4916e1cd1d hide banner for ffmpeg conversion 2021-10-23 08:21:15 -05:00
Blake Blackshear
cd87f3e6f4 fix old style recording cleanup 2021-10-23 08:21:15 -05:00
Blake Blackshear
2e494477a6 backwards compatibility for segment_type 2021-10-16 10:36:13 -05:00
Blake Blackshear
86a741b6e6 assign roles when single input and consolidate validation 2021-10-16 07:46:39 -05:00
Blake Blackshear
f738275d21 yell about config validation errors
for the people in the back
2021-10-16 07:17:36 -05:00
Blake Blackshear
e297e02800 store audio by default 2021-10-16 06:06:49 -05:00
Blake Blackshear
b2e05afff2 prevent oldest recording from being deleted 2021-10-15 21:56:03 -05:00
Blake Blackshear
c809494c98 switch to mpegts format for cache and create mp4 with faststart 2021-10-15 21:08:43 -05:00
Blake Blackshear
ef82c5c691 fix expiration when event spans the exire date 2021-10-15 07:30:55 -05:00
Blake Blackshear
5669f4c161 fix logo used for birdseye 2021-10-05 18:40:46 -05:00
Blake Blackshear
de811b7018 delete clean snapshot when duplicate 2021-10-02 06:59:02 -05:00
Blake Blackshear
7bf7365f6c better log message when corrupt segment detected 2021-10-02 06:58:29 -05:00
Blake Blackshear
e8e778c6d4 instantiate area field 2021-09-26 09:43:31 -05:00
Blake Blackshear
1d25936f31 add region/bbox/area to event table 2021-09-23 07:31:48 -05:00
Blake Blackshear
c3109f808c allow partial days in retention settings 2021-09-20 18:59:16 -05:00
Blake Blackshear
a943ac1308 use s6 to shutdown frigate 2021-09-18 07:40:27 -05:00
Blake Blackshear
5a8016de87 simplify logic and fix wrong segments expiring (fixes #1779) 2021-09-17 17:15:16 -05:00
Blake Blackshear
bc350644bd make expiration of deleted camera footage faster 2021-09-17 17:12:03 -05:00
Blake Blackshear
1b2134c49e remove clip_ready event type
this doesnt really mean anything more than "end" anymore. new has_clip property added
2021-09-15 07:16:52 -05:00
Blake Blackshear
f83d4a58dd add version to the logs on startup 2021-09-13 22:02:23 -05:00
Blake Blackshear
661f7baa21 fix global live config 2021-09-13 20:33:00 -05:00
Jason Hunter
a7b7a45b23 allow for custom object detection model via configuration 2021-09-12 07:17:26 -05:00
Blake Blackshear
89e317a6bb store start/end event with pre/post capture to avoid expiring wanted recordings 2021-09-11 08:34:27 -05:00
Blake Blackshear
288b1a0562 remove nested enabled config setting on events 2021-09-08 08:02:26 -05:00
Blake Blackshear
e8eb3125a5 disallow extra keys in config 2021-09-04 16:56:01 -05:00
Blake Blackshear
8109445fdd fix color config for ts (fixes #1679) 2021-09-04 16:40:10 -05:00
Blake Blackshear
f63a7cb6c0 remove font_scale in timestamp_style and calculate dynamically again 2021-09-04 16:34:48 -05:00
drinfernoo
65855e23d9
Add RTMP and timestamp style to global config (#1674)
* 📝🔧 - Make RTMP config global

Fixes #1671

* 📝🔧 - Make timestamp style config global

Fixes #1656

* fix test function names

* formatter

Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
2021-09-03 07:03:36 -05:00
Blake Blackshear
6c28613def moar speed 2021-09-03 06:31:06 -05:00
Blake Blackshear
56480dc1ef bulk delete recordings 2021-09-02 20:40:38 -05:00
Blake Blackshear
8e1c15291d optimize checking recordings for events
sorts events and recordings so you can avoid a cartesian product of checking all events against all recordings
2021-09-02 08:24:53 -05:00
Blake Blackshear
a1e52c51b1 dont expire events in two places 2021-09-01 07:06:52 -05:00
Blake Blackshear
8cc834633e reduce db queries for recording cleanup 2021-09-01 06:44:05 -05:00
Blake Blackshear
7d65c05994 properly handle scenario with no recordings 2021-08-30 06:58:50 -05:00
Blake Blackshear
fbea51372f sync global snapshot options (fixes #1621) 2021-08-28 09:14:00 -05:00
Blake Blackshear
fa5ec8d019 cleanup global and camera detect config (fixes #1615) 2021-08-28 08:51:51 -05:00
Blake Blackshear
11c425a7eb error on invalid role 2021-08-28 08:16:25 -05:00
Blake Blackshear
6ccff71408 handle missing camera names 2021-08-28 07:43:51 -05:00
Blake Blackshear
41fea2a531 fix match for websocket url (fixes #1633) 2021-08-28 07:42:30 -05:00
ᗪєνιη ᗷυнʟ
10ab70080a
fix: consistent error logging to mqtt connection issues (#1578) 2021-08-24 07:59:31 -05:00
Blake Blackshear
29de723267 limit legacy expiration to files after the oldest recording in the db 2021-08-24 06:50:58 -05:00
Blake Blackshear
26424488a5 use find to reduce CPU usage for legacy expiration 2021-08-23 07:21:27 -05:00
Blake Blackshear
334095252c copy then delete (fixes #1516) 2021-08-17 06:52:15 -05:00
Blake Blackshear
1c85f774eb move colormap to config 2021-08-16 08:02:04 -05:00
Blake Blackshear
bbf0fc8324 use CPu detector by default 2021-08-16 07:39:20 -05:00
Blake Blackshear
b143e11e0e cleanup logging 2021-08-16 07:38:53 -05:00
Sebastian Englbrecht
927f56ab9f Fix logger invocation 2021-08-15 10:34:40 -05:00
Blake Blackshear
2181379475 stop using pycoral libs for efficiency 2021-08-15 09:14:13 -05:00
Blake Blackshear
45798d6d14 clean house on clips 2021-08-15 08:30:27 -05:00
Blake Blackshear
f3a1c1de0a move width/height/fps under detect and make required
also resizes the output from ffmpeg to specified size
2021-08-14 14:18:35 -05:00
Blake Blackshear
0ccf543ec1 clarify a few things in logs 2021-08-14 14:04:00 -05:00
Blake Blackshear
b33f4e2dc6 assume the clip for the event exists with recordings 2021-08-12 06:42:44 -05:00
Blake Blackshear
9cab5da74c cleanup dynamic mp4 clips 2021-08-11 07:39:03 -05:00
Blake Blackshear
189b9c6648 use a nginx internal redirect 2021-08-11 06:22:26 -05:00
Blake Blackshear
1823bd0305 fix scaling 2021-08-09 07:46:28 -05:00
Jason Hunter
fc40567794 remove -f mp4 as it is not needed 2021-08-07 15:51:16 -05:00
Jason Hunter
de121008c1 fix DoesNotExist exception 2021-08-07 15:51:16 -05:00
Jason Hunter
2fbfbf614b add download option on clips and snapshots 2021-08-07 15:51:16 -05:00
Jason Hunter
c527b1ca5d change MQTT to toggle recordings instead of clips 2021-08-07 15:51:16 -05:00
Jason Hunter
181a504a14 break out recording maintenance and cleanup into separate threads 2021-08-07 15:51:16 -05:00
Jason Hunter
5d940bcb86 optimize recording maintenance logic 2021-08-07 15:51:16 -05:00
Jason Hunter
5d94c68d66 fix recording retention logic 2021-08-07 15:51:16 -05:00
Jason Hunter
a476bc9885 initial commit 2021-08-07 15:51:16 -05:00
Blake Blackshear
dc759a3e56 use new pycoral libraries 2021-08-07 15:34:55 -05:00
Blake Blackshear
e51021c573 switch default live resolution to 720 2021-07-21 07:47:11 -05:00
Blake Blackshear
19115fb828 handle exception when missing frame 2021-07-16 07:28:30 -05:00
Blake Blackshear
50f0c05e69 fix motion mask overlay 2021-07-13 08:56:20 -05:00
Blake Blackshear
6b26fc753e include ffmpeg_cmds in config endpoint 2021-07-10 06:40:50 -05:00
Blake Blackshear
ebee204ca0 ensure default args propogate 2021-07-10 06:40:50 -05:00
Blake Blackshear
92aa16c556 add labelmap customization to the config (fixes #507) 2021-07-07 22:58:18 -05:00
Blake Blackshear
a3853af47a fix test 2021-07-07 22:58:18 -05:00
Blake Blackshear
f26f7b8d3f make default motion a little more sensitive 2021-07-07 07:33:14 -05:00
Blake Blackshear
f4aa02cc19 allow specific objects to be listed for a zone (fixes #1123) 2021-07-07 07:33:14 -05:00
Blake Blackshear
da2492413f publish on zone change (fixes #1310) 2021-07-07 07:03:28 -05:00
Blake Blackshear
f892a821f5 no need to worry about payload here 2021-07-06 07:36:37 -05:00
ElMoribond
fe2e32c84f Add ability to restart 2021-07-06 07:36:37 -05:00
ElMoribond
c6e53d0ea8 Add ability to restart 2021-07-06 07:36:37 -05:00
ElMoribond
11d8095cdd Add ability to restart 2021-07-06 07:36:37 -05:00
ElMoribond
a4052a9fe5 Add ability to restart 2021-07-06 07:36:37 -05:00
Blake Blackshear
b24bb3eb18 add range to birdseye quality config 2021-07-02 07:52:02 -05:00
Blake Blackshear
98d8118fb2 add options to define jpeg quality 2021-07-02 07:52:02 -05:00
Blake Blackshear
b4e7e51e63 make contour_area dynamic 2021-07-01 07:54:09 -05:00
Blake Blackshear
2a41a9d3ff set min motion frame to 180 2021-07-01 07:54:09 -05:00
Blake Blackshear
09b0068d16 fix cache cleanup (fixes #1231) 2021-06-30 06:38:36 -05:00
Blake Blackshear
f9457be109 add test for max_disappeared default 2021-06-27 08:13:48 -05:00
Blake Blackshear
e9291fe9d1 make max_disappeared optional with default value 2021-06-27 08:13:48 -05:00
Craig Citro
20912c12e7 Check for jpg bytes before make_response
If jpg_bytes wasn't retrieved from either desk or a tracked object, respond with 404
Prevents uncaught error for unknown event ids sent to event_snapshot endpoint
2021-06-27 08:13:14 -05:00
Craig Citro
7ddba4fc59 Prevent repeated db connect calls
Only call database.connect() if database.is_closed()
Prevents errors if _db_connect is triggered twice
2021-06-27 08:13:14 -05:00
Patrick
7ad8b8298d identity check is correct way to check for None 2021-06-27 08:09:58 -05:00
Jason Hunter
3fb24b4bf5 fix timestamp 2021-06-25 06:13:08 -05:00
Jason Hunter
ab93cae4c0 remove side effects from password substitution 2021-06-25 06:13:08 -05:00
Jason Hunter
8d01cc4807 fix ffmpeg config and remove side effects 2021-06-25 06:13:08 -05:00
Jason Hunter
1e21a62851 remove unneeded changes 2021-06-24 06:53:05 -05:00
Jason Hunter
c664bd63f6 initial conversion to pydantic 2021-06-24 06:53:05 -05:00
Blake Blackshear
762afb8f43 add config for camera live stream 2021-06-23 08:15:15 -05:00
Blake Blackshear
f009897eca clear position before copy 2021-06-23 08:15:15 -05:00
Blake Blackshear
fa61e9da29 maintain aspect ratio for birdseye 2021-06-23 08:15:15 -05:00
Blake Blackshear
0ff037997f fixup timestamp config 2021-06-23 08:15:15 -05:00