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
Blake Blackshear
e8c2cfa5b5
no need to hang onto the last active frame
2021-06-23 08:15:15 -05:00
Blake Blackshear
fb214b64ca
reset layout_dim too
2021-06-23 08:15:15 -05:00
Sebastian Englbrecht
b3ee2de079
Fix review finding
2021-06-22 06:33:04 -05:00
Sebastian Englbrecht
211fcd64c7
Add and use config for timestamp style
2021-06-22 06:33:04 -05:00
Sebastian Englbrecht
5075e4eee1
Use timestamp decorator helper in codebase
2021-06-22 06:33:04 -05:00
Sebastian Englbrecht
7bfe8e4f5b
Add draw_timstamp: Helper for timestamp mods
2021-06-22 06:33:04 -05:00
Blake Blackshear
d66f5f6bad
cleanup clean snapshots
2021-06-19 08:49:06 -05:00
Blake Blackshear
fd9c8c1f0d
add snapshot time to event data
2021-06-19 08:49:06 -05:00
Blake Blackshear
3a3b788c65
save clean snapshot
2021-06-19 08:49:06 -05:00
Blake Blackshear
b134db48b3
adding clean_copy to snapshot config
2021-06-19 08:49:06 -05:00
mrdrup
f110a261b9
Fix 'FileExistsError' shared memory exception ( #945 )
2021-06-19 07:15:02 -05:00
gpete
b72b66781a
Fixed overwritten argument 'media' ( #1026 )
...
media variable name is reused and overwritten causing issues with event expiration & clean up.
Also changed name in pure_duplicates for consistency.
2021-06-19 07:11:43 -05:00
Blake Blackshear
3b695040d1
send clip_ready mqtt to event topic
2021-06-14 18:20:12 -05:00
Blake Blackshear
40bf7a0f41
cleanup
2021-06-14 07:48:35 -05:00
Blake Blackshear
cbdf2c2c71
remove gevent fixes #920
2021-06-14 07:48:35 -05:00
Blake Blackshear
bbe3f07ec6
overlay the frigate logo on the blank frame
2021-06-13 12:35:39 -05:00
Blake Blackshear
35281c037c
trickle in some frames after activity stops
2021-06-13 12:35:39 -05:00
Blake Blackshear
e0eb247028
output the current frame from each active camera instead of last active
2021-06-13 12:35:39 -05:00
Blake Blackshear
a7ecc2af4b
lock before iterating web sockets
2021-06-13 12:35:39 -05:00
Blake Blackshear
58cfb8bba4
set jsmpeg video size to same as camera
2021-06-12 07:23:14 -05:00
Blake Blackshear
ed761d1767
cap the array size of the output queue
2021-06-12 07:23:14 -05:00
Blake Blackshear
babe1dd1eb
precompute the layout offsets and dimensions
2021-06-12 07:23:14 -05:00
Blake Blackshear
cbd418b8de
use actual logger
2021-06-12 07:23:14 -05:00
Blake Blackshear
9c5b0d4138
implement birdseye modes
2021-06-12 07:23:14 -05:00
Blake Blackshear
94c21a6363
use values from config
2021-06-12 07:23:14 -05:00
Blake Blackshear
d1a5e2e8e0
add config for birdseye
2021-06-12 07:23:14 -05:00
Blake Blackshear
17179abf5a
use quality value and faster resize
2021-06-12 07:23:14 -05:00
Blake Blackshear
c70419bd0b
update birdseye layout calculations
2021-06-12 07:23:14 -05:00
Blake Blackshear
4eed27e178
add layout calculations
2021-06-12 07:23:14 -05:00
Blake Blackshear
8e2ba4a8ea
move birdseye placeholder to output process
2021-06-12 07:23:14 -05:00
Blake Blackshear
4596ada801
manage multiple cameras
2021-06-12 07:23:14 -05:00
Blake Blackshear
a8df97dc1a
only send frames to ffmpeg if there are clients listening
2021-06-12 07:23:14 -05:00
Blake Blackshear
4e0203ca68
increase read size and listen on local
2021-06-12 07:23:14 -05:00
Blake Blackshear
8413e10091
ensure output exits properly
2021-06-12 07:23:14 -05:00
Blake Blackshear
7aaf5bd29f
remove node jsmpeg server
2021-06-12 07:23:14 -05:00
Blake Blackshear
5afda72b84
handle exit signals
2021-06-12 07:23:14 -05:00
Blake Blackshear
7a6ffb1032
adding output process to handle downstream processing of frames
2021-06-12 07:23:14 -05:00
Blake Blackshear
7fc9026ca6
basic plumbing for birdseye view
2021-06-12 07:23:14 -05:00
Blake Blackshear
f4a0ec43a6
wip yuv_rgb refactor
2021-06-12 07:23:14 -05:00
Patrick
e8c342e162
Update http.py
...
comparison of constants, use T/F instead
2021-06-10 20:58:28 -05:00
Jason Hunter
098e293c82
fetch recordings until end of hour, not top of next hour
2021-06-10 07:04:28 -05:00
Jason Hunter
78a0b5e6c9
clean up VOD endpoint
2021-06-10 07:04:28 -05:00
Jason Hunter
055bd22138
initial implementation of recordings table
2021-06-10 07:04:28 -05:00
Mingkwan Burckhardt
8dfff83447
Added support for authentication with client certificate with MQTT broker
2021-06-06 07:57:46 -05:00
Jason Hunter
68dfaaf767
hide recordings page if record is not enabled, show error if no recordings available.
2021-06-06 07:54:58 -05:00
Jason Hunter
b53a50cd54
restyle to match Material Design List specs
2021-06-05 07:30:18 -05:00
Jason Hunter
9822d614e2
fix videojs bug when switching cameras, support recording delay, fix navigation highlight
2021-06-05 07:30:18 -05:00
Jason Hunter
ca20c735f7
add event card to overlay
2021-06-05 07:30:18 -05:00
Jason Hunter
5461308d30
Initial Recordings UI
2021-06-05 07:30:18 -05:00
Sean Vig
abbc608ee4
Updates to object processing
...
Lock updates to tracked objects, current frame time, motion boxes, and
regions on `update()`.
Directly create Counters using counted values.
Don't convert removed_ids, new_ids, or updated_ids sets to lists.
Update defaultdict's to remove un-necessary lambdas when possible.
When possible, drop un-necessay list comprehensions, such as when
calling `any`.
Use set comprehension, rather than passing a list comprehension into
`set()`.
Do the slightly more pythonic `x not in y` rather than `not x in y` to
check list inclusion.
2021-05-23 21:00:56 -05:00
Sean Vig
9634ec8e31
Allow zone configs to be frozen
...
Set the color at construction so the zone config objects can be frozen
2021-05-23 20:38:57 -05:00
Sean Vig
84a0827aee
Use dataclasses for config handling
...
Use config data classes to eliminate some of the boilerplate associated
with setting up the configuration. In particular, using dataclasses
removes a lot of the boilerplate around assigning properties to the
object and allows these to be easily immutable by freezing them. In the
case of simple, non-nested dataclasses, this also provides more
convenient `asdict` helpers.
To set this up, where previously the objects would be parsed from the
config via the `__init__` method, create a `build` classmethod that does
this and calls the dataclass initializer.
Some of the objects are mutated at runtime, in particular some of the
zones are mutated to set the color (this might be able to be refactored
out) and some of the camera functionality can be enabled/disabled. Some
of the configs with `enabled` properties don't seem to have mqtt hooks
to be able to toggle this, in particular, the clips, snapshots, and
detect can be toggled but rtmp and record configs do not, but all of
these configs are still not frozen in case there is some other
functionality I am missing.
There are a couple other minor fixes here, one that was introduced
by me recently where `max_seconds` was not defined, the other to
properly `get()` the message payload when handling publishing mqtt
messages sent via websocket.
2021-05-23 20:38:57 -05:00
Blake Blackshear
1fbcf4d9b9
fixes
2021-05-23 08:21:18 -05:00
Sean Vig
80f8256422
Improve handling of object matching
...
Use `np.unique` to determine the correct set of row/col pairs to iterate
over when doing the object matching without needing to track which rows
or columns have already been seen. Add to some of the accompanying
documentation to clarify this algorithm.
Also fix what looks to be an erroneous early return, and change this to
a continue.
2021-05-22 08:04:38 -05:00
Sean Vig
57864f2be6
Wait on stop event when possible
...
Generally eliminate the `while True` loops while waiting for a stop
event and prefer to condition the loops on if the stop event is set,
blocking on that where it makes sense. This generally comes in 3
flavors. First and simplest, when there is a sleep and the stop event
is the only thing the loop blocks on, instead do a check using
`stop_event.wait(timeout)` to instead block on the stop event for the
designated amount of time. Second, when there is a different event that
is blocking in the loop, condition the loop on `stop_event.is_set()`
rather than breaking when it is set. Finally, when there is a separate
internal condition that requires a counter, have the loop iterate over
the counter and use `if stop_event.wait(timeout)` internal to the loop.
2021-05-22 07:54:16 -05:00
Jason Hunter
aab6a00e4c
Add support for NGINX VOD Module
2021-05-22 07:48:44 -05:00
Sean Vig
a4e6d9ed9a
Improve ffprobe executions
...
When running ffprobe, use `subprocess.run` rather than
`subprocess.Popen`. This simplifies the handling that is needed to run
and process the outputs. Here, filename parsing is also simplified by
explicitly removing the file extension with `os.path.splitext` and
forcing a single split into the camera name and the formatted date.
2021-05-22 07:48:00 -05:00
Mitch Ross
ebb6d348a3
feat(web): Delete events from Event page and API ( #991 )
...
Co-authored-by: Scott Roach <scott@thinkpivot.io>
Co-authored-by: Paul Armstrong <paul@spaceyak.com>
2021-05-12 08:19:02 -07:00
Jason Hunter
482399d82f
allow logger daemon process to be killed with the main thread, thus allowing us to continue logging during shutdown
2021-05-06 07:01:33 -05:00
Blake Blackshear
4252857e19
remove tmpfs_cache_size option
2021-02-25 07:01:59 -06:00
Blake Blackshear
6d12a34c40
remove thumbnail attribute if null
2021-02-25 07:01:59 -06:00