Commit Graph
483 Commits
Author SHA1 Message Date
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
PatrickandBlake Blackshear e8c342e162 Update http.py
comparison of constants, use T/F instead
2021-06-10 20:58:28 -05:00
Jason HunterandBlake Blackshear 098e293c82 fetch recordings until end of hour, not top of next hour 2021-06-10 07:04:28 -05:00
Jason HunterandBlake Blackshear 78a0b5e6c9 clean up VOD endpoint 2021-06-10 07:04:28 -05:00
Jason HunterandBlake Blackshear 055bd22138 initial implementation of recordings table 2021-06-10 07:04:28 -05:00
Mingkwan BurckhardtandBlake Blackshear 8dfff83447 Added support for authentication with client certificate with MQTT broker 2021-06-06 07:57:46 -05:00
Jason HunterandBlake Blackshear 68dfaaf767 hide recordings page if record is not enabled, show error if no recordings available. 2021-06-06 07:54:58 -05:00
Jason HunterandBlake Blackshear b53a50cd54 restyle to match Material Design List specs 2021-06-05 07:30:18 -05:00
Jason HunterandBlake Blackshear 9822d614e2 fix videojs bug when switching cameras, support recording delay, fix navigation highlight 2021-06-05 07:30:18 -05:00
Jason HunterandBlake Blackshear ca20c735f7 add event card to overlay 2021-06-05 07:30:18 -05:00
Jason HunterandBlake Blackshear 5461308d30 Initial Recordings UI 2021-06-05 07:30:18 -05:00
Sean VigandBlake Blackshear 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 VigandBlake Blackshear 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 VigandBlake Blackshear 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 VigandBlake Blackshear 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 VigandBlake Blackshear 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 HunterandBlake Blackshear aab6a00e4c Add support for NGINX VOD Module 2021-05-22 07:48:44 -05:00
Sean VigandBlake Blackshear 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
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 HunterandBlake Blackshear 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 ArmstrongandBlake Blackshear 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