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
Blake Blackshear
9e126a4b91
style cleanup
2021-02-25 07:01:59 -06:00
Blake Blackshear
39ff49e054
formatting cleanup
2021-02-25 07:01:57 -06:00
Blake Blackshear
0344d61b26
use gevent sleep to prevent mjpeg from blocking
2021-02-25 06:34:36 -06:00
Paul Armstrong
e399790442
feat(web): mqtt for stats
2021-02-20 08:20:17 -06:00
Blake Blackshear
1a7853a47e
subscribe in the connect callback ( fixes #814 )
2021-02-20 08:20:17 -06:00
Blake Blackshear
b6572b7272
add some error handling to mqtt relay
2021-02-20 08:20:17 -06:00
Blake Blackshear
57ced2c284
constrain websockets to frigate topics
2021-02-20 08:20:17 -06:00
Blake Blackshear
26a3491466
revise log messages
2021-02-20 08:20:17 -06:00
Blake Blackshear
eed8463832
relay messages from sockets to mqtt
2021-02-20 08:20:17 -06:00
Blake Blackshear
718b4f3fd7
relay mqtt to clients
2021-02-20 08:20:17 -06:00
Blake Blackshear
22461d1728
simple echo websocket working
2021-02-20 08:20:17 -06:00
Blake Blackshear
a661fddaf3
fix cache cleanup for large full disks
2021-02-20 08:20:17 -06:00
Blake Blackshear
1b85e561b9
only save the event to the database if a snapshot or clip exists
2021-02-20 08:20:17 -06:00
Blake Blackshear
513a099c24
better error handling ( fixes #739 )
2021-02-20 08:20:17 -06:00
Blake Blackshear
e299e73a68
ignore detections that don't overlap with motion
2021-02-20 08:20:17 -06:00
Blake Blackshear
9550ac7422
fix intersection calculation
2021-02-20 08:20:17 -06:00
Blake Blackshear
01c3b4fa6e
try and ensure database closes cleanly
2021-02-20 08:20:17 -06:00
Blake Blackshear
165ca8fbc7
purge duplicate events during cleanup
2021-02-20 08:20:17 -06:00
Blake Blackshear
ce90ae343c
add global object mask
2021-02-20 08:20:17 -06:00
Blake Blackshear
d51e9446ff
add camera level ffmpeg params
2021-02-20 08:20:17 -06:00
Blake Blackshear
d3524ee46f
adjust jpg quality in other locations too
2021-02-20 08:20:17 -06:00
Blake Blackshear
121ea37825
allow defining required zones for snapshots/clips/mqtt
2021-02-20 08:20:17 -06:00
Blake Blackshear
9592d95599
proactively clean up cache when above 90% use
2021-02-20 08:20:17 -06:00
Blake Blackshear
d6faa18adb
increase default max_disappeared to 5x FPS
2021-02-20 08:20:17 -06:00
Blake Blackshear
1cbe6f77ee
only run detection on objects that intersect with motion
2021-02-20 08:20:17 -06:00
Blake Blackshear
4f5d4e36b7
add disk usage to stats
2021-02-20 08:20:17 -06:00
Paul Armstrong
163025c1f2
fix(app): reduce JPEG quality to drastically improve size
2021-02-20 08:20:17 -06:00
Paul Armstrong
e6516235fa
feat(web): auto-paginate events page
2021-01-31 06:18:35 -06:00
Blake Blackshear
40d5a9f890
change default log level
2021-01-31 06:18:35 -06:00
Blake Blackshear
ee3e744cc6
tail last 100 lines of ffmpeg logs and dump when failure detected
2021-01-31 06:18:35 -06:00
Blake Blackshear
b55bd1e027
add param to reduce response sizes by excluding thumbnails in api response
2021-01-31 06:18:35 -06:00
Blake Blackshear
630c2ee6f6
use sqlitequeuedb
2021-01-26 21:40:33 -06:00
Blake Blackshear
d31c295598
add debug log when cache is cleaned up
2021-01-26 21:40:33 -06:00
Blake Blackshear
a7bb0931c4
if detection stopped, assume the container needs a restart
2021-01-26 21:40:33 -06:00
Blake Blackshear
d315dbea22
rate limit tracked object updates to every 5 seconds
2021-01-26 21:40:33 -06:00
Blake Blackshear
8db7ab6724
add snapshot endpoint that works during the event fixes #575
2021-01-26 21:40:33 -06:00
Blake Blackshear
9a2c034ae8
get the thumbnail instead of the full frame
2021-01-26 21:40:33 -06:00
Blake Blackshear
2885b80a13
dont wait forever for the cache
2021-01-26 21:40:33 -06:00
Blake Blackshear
4a85156e87
fix initial switch state
2021-01-26 21:40:33 -06:00
Blake Blackshear
1785c69e1b
handle exception when frame isnt in cache
2021-01-26 21:40:33 -06:00
Blake Blackshear
11016b8486
ensure error message with missing config is printed
2021-01-26 21:40:33 -06:00
Blake Blackshear
1e84f08018
fix mqtt switch handling
2021-01-26 21:40:33 -06:00
Blake Blackshear
7f663328dc
initialize detection correctly from config
2021-01-26 21:40:33 -06:00
Blake Blackshear
70167a34b6
fix zone config
2021-01-26 21:40:33 -06:00
Blake Blackshear
eb0a5e1c55
rename snapshot endpoint to thumbnail
2021-01-26 21:40:33 -06:00
Blake Blackshear
47ac77dbb0
mqtt tweaks for switches
2021-01-26 21:40:33 -06:00
Blake Blackshear
ec84847be7
allow summary data to be filtered
2021-01-26 21:40:33 -06:00
Blake Blackshear
8762da627b
snapshots config typo
2021-01-26 21:40:33 -06:00
Blake Blackshear
3fab321045
update object filters to inherit like motion settings
2021-01-26 21:40:33 -06:00
Blake Blackshear
9451048574
remove support for image masks
2021-01-26 21:40:33 -06:00
Blake Blackshear
46c002038b
don't fallback to the CPU
...
fixes #381
2021-01-26 21:40:33 -06:00
Blake Blackshear
d1d833ea9a
add change type to events topic
...
#476
2021-01-26 21:40:33 -06:00
Blake Blackshear
c1f0750526
ensure each camera has a detect role set
2021-01-26 21:40:33 -06:00
Blake Blackshear
89e02b6956
add detection enable to config
...
fixes #482
2021-01-26 21:40:33 -06:00
Blake Blackshear
97e8258288
add env vars to config
...
fixes #509
2021-01-26 21:40:33 -06:00
Blake Blackshear
39040c1874
enable and disable detection via mqtt
2021-01-26 21:40:33 -06:00
Blake Blackshear
bca0531963
handle null thumbnail data
2021-01-26 21:40:33 -06:00
Blake Blackshear
b2c7fc8f5b
add mask as object filter
2021-01-26 21:40:33 -06:00
Blake Blackshear
96ac2c29d6
add object masks and move moton mask
2021-01-26 21:40:33 -06:00
Blake Blackshear
14a5118b4d
add missing global shapshots config
2021-01-26 21:40:33 -06:00
Paul Armstrong
c618867941
feat!: web user interface
2021-01-26 21:40:33 -06:00
Blake Blackshear
5ad4017510
try to cleanup some migration logging
2021-01-26 21:40:33 -06:00
Blake Blackshear
63e14a98f9
add retention settings for snapshots
2021-01-26 21:40:33 -06:00
Blake Blackshear
25e3fe8eab
init variables on camera state
2021-01-26 21:40:33 -06:00
Blake Blackshear
840f046572
handle process exit exceptions
2021-01-26 21:40:33 -06:00
Blake Blackshear
89e3c2e4b1
store has_clip and has_snapshot on events
2021-01-26 21:40:33 -06:00
Blake Blackshear
c770470b58
add database migrations
2021-01-26 21:40:33 -06:00
Nat Morris
4619836122
Set titles for forked processes
2021-01-26 21:40:33 -06:00
Nat Morris
76403bba8e
New stats module, refactor stats generation out of http module.
...
StatsEmitter thread to send stats to MQTT every 60 seconds by default, optional stats_interval config value.
New service stats attribute, containing uptime in seconds and version.
2021-01-26 21:40:33 -06:00
Blake Blackshear
a9afa303a2
turn off snapshots via mqtt
2021-01-26 21:40:33 -06:00
Blake Blackshear
e5399ae07a
enable turning clips on and off via mqtt
2021-01-26 21:40:33 -06:00
Blake Blackshear
80a5a7b129
cleanup save_Clips/clips inconsistency
2021-01-26 21:40:33 -06:00
Blake Blackshear
9dc97d4b6b
add jpg snapshots to disk and clean up config
2021-01-26 21:40:33 -06:00
Paul Armstrong
d8c9169af2
fix: ensure timestamp is drawn above mask
2021-01-26 21:40:33 -06:00
kluszczyn
b0b2d9d972
Recordings - fix expire_file
2021-01-26 21:40:33 -06:00
Blake Blackshear
fc04bc6046
better mask error handling
2021-01-26 21:40:33 -06:00
Blake Blackshear
9f504253fb
fix tmpfs
2021-01-26 21:40:33 -06:00
Blake Blackshear
961997e078
remove redundant error output
2021-01-26 21:40:33 -06:00
Blake Blackshear
363594a9a2
use CACHE_DIR constant
2021-01-26 21:40:33 -06:00
Blake Blackshear
247e2677f3
enable mounting tmpfs volume on start
2021-01-26 21:40:33 -06:00
Blake Blackshear
bc8b85860c
update process clip for latest changes
2021-01-26 21:40:33 -06:00
Blake Blackshear
44d45c5880
publish event updates on zone change
2021-01-26 21:40:33 -06:00
Blake Blackshear
2cc9a15f6a
handle scenario with empty cache
2021-01-26 21:40:33 -06:00
Blake Blackshear
32fb76b3d1
add num_threads fixes #322
2021-01-26 21:40:33 -06:00
Blake Blackshear
8d52e2635a
optimize clips fixes #299
2021-01-26 21:40:33 -06:00
Blake Blackshear
f20e1f20a6
add post_capture option
2021-01-26 21:40:33 -06:00
Blake Blackshear
af8594c5c6
re-crop to the object rather than the region
2021-01-26 21:40:33 -06:00
Blake Blackshear
899d41f361
allow runtime drawing settings for mjpeg and latest
2021-01-26 21:40:33 -06:00
Blake Blackshear
7dc6382c90
allow the mask to be a list of masks
2021-01-26 21:40:33 -06:00
Blake Blackshear
e8009c2d26
adding version endpoint
2021-01-26 21:40:33 -06:00
Blake Blackshear
3bc7cdaab6
configurable motion and detect settings
2021-01-26 21:40:33 -06:00
Blake Blackshear
8f68df60c7
fix test
2021-01-26 21:40:33 -06:00
Blake Blackshear
6af3cb6134
switch default threshold to .7
2021-01-26 21:40:33 -06:00
Blake Blackshear
2ff0c3907f
allow process clips to output a csv of scores
2021-01-26 21:40:33 -06:00
Blake Blackshear
dd102ff01d
allow db path to be customized
2021-01-26 21:40:33 -06:00
Blake Blackshear
a4b88ac4a7
fix process clip
2021-01-26 21:40:33 -06:00
Blake Blackshear
93b9d586d2
handle empty string args
2021-01-26 21:40:33 -06:00
Blake Blackshear
41dd4447cc
allow region to extend beyond the frame
2021-01-26 21:40:33 -06:00
Blake Blackshear
d0470fffcc
allow defining model shape and switch to mobiledet as default model
2021-01-26 21:40:33 -06:00
Blake Blackshear
5053305e17
add model dimensions to config
2021-01-26 21:40:33 -06:00
Blake Blackshear
3c07767138
handle and warn if roles dont match enabled features
2021-01-26 21:40:33 -06:00
Blake Blackshear
e147852878
catch all psutil errors
2021-01-26 21:40:33 -06:00
Blake Blackshear
e7cdace0ab
comment you zeroconf
2021-01-26 21:40:33 -06:00
Blake Blackshear
f60eb4e977
fix flask logger config
2021-01-26 21:40:33 -06:00
Blake Blackshear
7aecf6c6de
fix graceful exits
2021-01-26 21:40:33 -06:00
Blake Blackshear
75d62096a6
better exception handling
2021-01-26 21:40:33 -06:00
Blake Blackshear
7c44994070
fix default args
2021-01-26 21:40:33 -06:00
Blake Blackshear
4c6e90717a
update some default config values
2021-01-26 21:40:33 -06:00
Blake Blackshear
d60ca9d783
log level configuration
2021-01-26 21:40:33 -06:00