Commit Graph

165 Commits

Author SHA1 Message Date
Andrew Reiter
a96a951e23
Nvidia Jetson ffmpeg + TensorRT support (#6458)
* Non-Jetson changes

Required for later commits:
- Allow base image to be overridden (and don't assume its WORKDIR)
- Ensure python3.9
- Map hwaccel decode presets as strings instead of lists
Not required:
- Fix existing documentation
- Simplify hwaccel scale logic

* Prepare for multi-arch tensorrt build

* Add tensorrt images for Jetson boards

* Add Jetson ffmpeg hwaccel

* Update docs

* Add CODEOWNERS

* CI

* Change default model from yolov7-tiny-416 to yolov7-320

In my experience the tiny models perform markedly worse without being
much faster

* fixup! Update docs
2023-07-26 05:50:41 -05:00
Nicolas Mowen
dc44a6c3b4
Community Supported Boards Framework (#7114)
* Make main frigate build non rpi specific and build rpi using base image

* Add boards to sidebar

* Fix docker build

* Fix docs build

* Update pr branch for testing

* remove target from rpi build

* Remove manual build

* Add push build for rpi

* fix typos, improve wording

* Add arm build for rpi

* Cleanup and add default github ref name

* Cleanup docker build file system

* Setup to use docker bake

* Add ci/cd for bake

* Fix path

* Fix devcontainer

* Set targets

* Fix build

* Fix syntax

* Add wheels target

* Move dev container to trt

* Update key and fix rpi local

* Move requirements files and set intermediate targets

* Add back --load

* Update docs for community board development

* Update installation docs to reflect different builds available

* Update docs with official and community supported headers

* Update codeowners docs

* Update docs

* Assemble main and standard builds

* Change order of pushes

* Remove community board after successful build

* Fix rpi bake file names
2023-07-23 16:45:29 -05:00
Thomas Anderson
d0413e3ea8
fix: allow env var templating for go2rtc rtsp creds (#6449) 2023-07-23 08:21:51 -05:00
Nate Meyer
dd02958f7c
Upgrade TensorRT to 8.5.3 (#7006)
* Update to latest tensorrt (8.6.1) release

* Build trt libyolo_layer.so in container

* Update tensorrt_models script to convert models from the frigate container

* Fix typo in model script

* Fix paths to yolo lib and models folder

* Add S6 scripts to test and convert specified TensortRT models at startup.

Rearrange tensorrt files into a docker support folder.

* Update TensorRT documentation to reflect the new model conversion process and minimum HW support.

* Fix model_cache path to live in config directory

* Move tensorrt s6 files to the correct directory

* Fix issues in model generation script

* Disable global timeout for s6 services

* Add version folder to tensorrt model_cache path

* Include TensorRT version 8.5.3

* Add numpy requirement prior to removal of np.bool

* This TRT version uses a mixture of cuda dependencies

* Redirect stdout from noisy model conversion
2023-07-06 14:20:33 -05:00
Sergey Krashevich
22cc2712a6
Bump NGINX version to 1.25.1, VOD module version to 1.31, secure token module version to 1.5, and RTMP module version to 1.2.2 (#7058) 2023-07-06 13:51:28 -05:00
Nicolas Mowen
606f00867e
Fix go2rtc getting env var (#7052) 2023-07-06 09:11:49 -05:00
Andrew Reiter
325205740b
Check ffmpeg version instead of checking for presence of BTBN_PATH (#7023)
* Check ffmpeg version instead of checking for presence of BTBN_PATH

* Query ffmpeg version in s6 run script instead of subprocessing in every import

* Define LIBAVFORMAT_VERSION_MAJOR in devcontainer too

* Formatting

* Default ffmpeg version to current btbn version so unit tests pass
2023-07-06 07:35:26 -05:00
Sergey Krashevich
b6fce8f0bb
Integrate ccache into libusb and nginx build scripts for improved build speed (#6886)
* Add ccache to libusb and nginx build scripts

* Add ccache support to Dockerfile for faster builds

* Add ccache to PATH and use it for compiling nginx with Makefile in build_nginx.sh script
2023-06-30 07:28:48 -05:00
Nicolas Mowen
d3949eebfa
Add API and WebUI to export recordings (#6550)
* Add ability to export frigate clips

* Add http endpoint

* Add dir to nginx

* Add webUI

* Formatting

* Cleanup unused

* Optimize timelapse

* Fix pts

* Use JSON body for params

* Use hwaccel to encode when available

* Print ffmpeg command when fail

* Print ffmpeg command when fail

* Add separate ffmpeg preset for timelapse

* Add docs outlining the export directory

* Add export docs

* Use ''

* Fix playlist max time

* Lower max playlist time

* Add api docs for export

* isort fixes
2023-06-08 07:32:35 -04:00
Martin Weinelt
ab50d0b006
Add isort and ruff linter (#6575)
* Add isort and ruff linter

Both linters are pretty common among modern python code bases.

The isort tool provides stable sorting and grouping, as well as pruning
of unused imports.

Ruff is a modern linter, that is very fast due to being written in rust.
It can detect many common issues in a python codebase.

Removes the pylint dev requirement, since ruff replaces it.

* treewide: fix issues detected by ruff

* treewide: fix bare except clauses

* .devcontainer: Set up isort

* treewide: optimize imports

* treewide: apply black

* treewide: make regex patterns raw strings

This is necessary for escape sequences to be properly recognized.
2023-05-29 05:31:17 -05:00
Blake Blackshear
deccc4fd46
fix coral libs (#6558) 2023-05-21 07:14:53 -05:00
Korneliusz Jarzębski
17e8a46c7d
add ffmpeg bandwidth stats (#6492)
* add ffmpeg bandwidth stats

* add ffmpeg bandwidth stats

* Change column name

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* fix lint formatting

---------

Co-authored-by: Korneliusz Jarzębski <k.jarzebski@netverse.pl>
Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2023-05-17 20:01:56 -05:00
Sergey Krashevich
f52b1212cd
add go2rtc version (#6390)
Update System.jsx
2023-05-04 21:04:06 -05:00
Blake Blackshear
0d16bd0144
False positives (#6217)
* add false positive submission

* switch timeline events to x,y,w,h

* update docs

* fix type checks

* convert to upsert

* fix config test
2023-04-24 07:24:28 -05:00
Nicolas Mowen
ece7dc29e7
Fix substitution change (#6212) 2023-04-23 12:19:56 -05:00
Felipe Santos
cdd8e6fd4e
Migrate default database path from /media/frigate to /config (#5219)
* Migrate db path to /config

* Ensure oneshot runs

* Put logic inside of Frigate's run

* Use new db default path in code

* Fix missing config dir

* Upgrade yq to 4.33.3
2023-04-23 11:35:40 -05:00
Blake Blackshear
cefbed614f
Remove arm32 (#5935)
* remove references to 32bit arm

* scheduled build to maintain actions cache
2023-04-08 09:24:28 -06:00
Felipe Santos
bc16ad1f13
Fix small warning not appearing in go2rtc logs in UI (#5882)
I always forget that for the logs to appear there, they should not be sent to stderr but stdout.
2023-03-30 20:03:42 -05:00
Felipe Santos
1b8cd10142
Allow to override go2rtc binary in add-on (#5876) 2023-03-29 19:08:04 -05:00
Nicolas Mowen
42eaa13402
Enable CORS for go2rtc by default (#5610)
* Enable CORS for go2rtc by default

* Fix typo
2023-03-03 17:43:50 -06:00
Felipe Santos
fbf29667d4
Upgrade s6-overlay from 3.1.4.0 to 3.1.4.1 (#5558) 2023-02-21 06:30:32 -06:00
Felipe Santos
a8c567d877
Add healthcheck for go2rtc service (#5545)
* Upgrade s6-overlay from 3.1.3.0 to 3.1.4.0

* Add go2rtc healthcheck service

Also don't make go2rtc exits cause the container to fail.

* Reword healthcheck message

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Add timeout to go2rtc healthcheck

* Update healthcheck message

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Give additional time for go2rtc start/restart

* Fix typo

* Avoid creating go2rtc config multiple times

* Fix healthcheck not starting

* Fix sleep

* Fix more hidden logs

* Decrease time window and use curl's timeout flag

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2023-02-19 13:11:12 -06:00
Nicolas Mowen
1715e2e09d
Init birdseye restream command in S6 (#5494)
* remove restream from frigate logic

* Migrate birdseye stream definition to S6

* Cleanup

* Use consts to import as well
2023-02-15 07:09:25 -06:00
Blake Blackshear
27a31e731f
install i965-va-driver-shaders (#5451) 2023-02-11 09:57:15 -06:00
Felipe Santos
748815b6ce
Fix logging IP instead of WebRTC port (#5417) 2023-02-08 21:28:20 -06:00
Nicolas Mowen
ad60f4894b
Update go2rtc to 1.1.1 (#5333)
* Update go2rtc to 1.1.1

* Remove redundant qualifiers

* Remove qualifiers

* Set default_query

* Update version
2023-02-01 18:09:56 -06:00
Felipe Santos
fd3688a9c7
Upgrade s6-overlay from 3.1.2.1 to 3.1.3.0 (#5239) 2023-01-25 21:33:47 -06:00
Nicolas Mowen
f54b223adf
Print webrtc info to stderr (#5227)
* Update create_config.py

* Print to stderr
2023-01-25 18:38:45 -06:00
Felipe Santos
2f3e046130
Fix HA IP address and WebRTC port inferring (#5209)
* Fix HA IP address and WebRTC port inferring

* Add note for when candidates aren't being injected
2023-01-24 07:26:16 -06:00
Nicolas Mowen
5fa1fbafed
Use frigate env var substitution (#5153) 2023-01-18 17:51:35 -06:00
Felipe Santos
d36ab05bf1
Do not wait forever for services to exit (#5149)
* Fix frigate service restarting inside devcontainer

* Add timeouts to services exit process

So s6 won't wait forever.
2023-01-18 17:50:51 -06:00
Felipe Santos
e2239d36c9
Auto discover internal WebRTC candidate for add-on (#5089)
* Auto discover internal WebRTC candidate for add-on

* Write logs to stderr

* Fix port number

* Integrate with newest changes

* Update docs

* Use local variable more

* Use Python to write file, fix JSON->YAML

* Store into variable

* Update docs/docs/configuration/live.md

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Update docs/docs/configuration/live.md

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Update docs/docs/configuration/live.md

* Update docs/docs/configuration/live.md

* Refator s6 scripts to the new format

* Remove unneeded workaround

* Update docker/rootfs/usr/local/go2rtc/create_config.py

* Migrate logging to new s6 format

* Remove more unnecessary s6 variables

* Fix prepare-log and when go2rtc is not present in config

* Restart the whole container if either Frigate or go2rtc fails

* D

* Fix service name in finish

* Fix nginx finish comment

* Restart improvements

* Fix devcontainer

* Fix format

* Update Dockerfile

Co-authored-by: Felipe Santos <felipecassiors@gmail.com>

* Improve scripts logging

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2023-01-18 17:23:40 -06:00
Felipe Santos
02df2a8bbd
Refactor s6 scripts to the new format (#5135)
* Refator s6 scripts to the new format

* Remove unneeded workaround

* Migrate logging to new s6 format

* Remove more unnecessary s6 variables

* Fix prepare-log and when go2rtc is not present in config

* Restart the whole container if either Frigate or go2rtc fails

* D

* Fix service name in finish

* Fix nginx finish comment

* Restart improvements

* Fix devcontainer

* Fix format

* Update Dockerfile

Co-authored-by: Felipe Santos <felipecassiors@gmail.com>

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
2023-01-18 07:53:53 -06:00
Nicolas Mowen
f5466426df
Fix go2rtc error when not set (#5133) 2023-01-17 22:38:17 -06:00
Nicolas Mowen
19afb035ff
Rewrite restream (#5106)
* Tear out restream config

* Rework birdseye restream

* Create go2rtc config handler

* Fix bug

* Write start script

* Rework style

* Fix python run syntax

* Output as json instead of yaml

* Put old live config back and fix birdseye references

* Fix camera webUI

* Add frigate env var subsitutions

* Fix webui checks

* Check keys

* Remove unused prest

* Fix tests

* Update restream docs

* Update restream docs

* Update live docs

* Update camera specific recommendation

* Update more docs

* add links for the docs

Co-authored-by: Felipe Santos <felipecassiors@gmail.com>

* Update note about supported audio codecs

* Move restream to go2rtc

* Docs fixes

* Add verification of stream name

* Ensure that webUI uses camera name

* Update docs to reflect new live stream name

* Fix check

* Formatting

* Remove audio from detect

Co-authored-by: Felipe Santos <felipecassiors@gmail.com>

* Fix docs

* Don't handle env variable substitution

* Add go2rtc version

* Clarify docs

Co-authored-by: Felipe Santos <felipecassiors@gmail.com>
2023-01-16 17:50:35 -06:00
Ryan Mounce
30f520f6f0
Patch nginx-vod-module to ignore RBSP trailing bits (#5114)
Works around https://github.com/blakeblackshear/frigate/issues/4572
2023-01-16 07:01:04 -06:00
Felipe Santos
daadd206dd
Update live view documentation to match newest go2rtc (#5083)
* Remove host network suggestion from docs

* Mention alternative network modes

* Update docs/docs/configuration/live.md

* Update docs/docs/configuration/live.md

* Wording tweaks

* Update docs/docs/configuration/live.md

* Update docs/docs/configuration/live.md

Co-authored-by: Blake Blackshear <blakeb@blakeshome.com>
2023-01-15 09:35:21 -06:00
Nate Meyer
60b2315028
Update library loading for tensorrt (#5087)
* Update library loading for tensorrt

* Add symlink to libnvrtc
2023-01-14 13:14:27 -06:00
Nicolas Mowen
1643b4d108
Clean up go2rtc logs to not show color text unicode (#5027)
* Use color logs for go2rtc

* Update docs to show need for formatted logs

* Fix log selector
2023-01-11 17:21:13 -06:00
Blake Blackshear
3cb96091ec
update before install (#4966) 2023-01-08 14:39:39 -06:00
Nicolas Mowen
5f4c439f57
Fix btbn pulling wrong build (#4961) 2023-01-08 09:23:58 -06:00
Blake Blackshear
1f963ec5aa
Fix raspberry pi hwaccel (#4955)
* use ffmpeg from raspbian repo

* dynamically choose timeout param

* invert logic

* Add hwaccel presets for rpi

Co-authored-by: Nick Mowen <nickmowen213@gmail.com>
2023-01-08 07:04:58 -06:00
Nate Meyer
8ac3114f9a
Cleanup Detector labelmap (#4932)
* Add missing labels to default labelmap.  Fill any holes with "unknown".  Remove unique labelmap for tensorrt.

* Replace "truck" with "car" on Openvino labelmap
2023-01-06 07:03:16 -06:00
Blake Blackshear
12235acd75
Build nginx with tmpfs (#4933)
* Update Dockerfile

* Update Dockerfile

* refactor into script and to be consistent

Co-authored-by: Sergey Krashevich <svk@svk.su>
2023-01-06 06:48:41 -06:00
Nate Meyer
3f05f74ecb
Nvidia TensorRT detector (#4718)
* Initial WIP dockerfile and scripts to add tensorrt support

* Add tensorRT detector

* WIP attempt to install TensorRT 8.5

* Updates to detector for cuda python library

* TensorRT Cuda library rework WIP

Does not run

* Fixes from rebase to detector factory

* Fix parsing output memory pointer

* Handle TensorRT logs with the python logger

* Use non-async interface and convert input data to float32. Detection runs without error.

* Make TensorRT a separate build from the base Frigate image.

* Add script and documentation for generating TRT Models

* Add support for TensorRT devcontainer

* Add labelmap to trt model script and docs.  Cleanup of old scripts.

* Update detect to normalize input tensor using model input type

* Add config for selecting GPU. Fix Async inference. Update documentation.

* Update some CUDA libraries to clean up version warning

* Add CI stage to build TensorRT tag

* Add note in docs for image tag and model support
2022-12-30 10:53:17 -06:00
Nicolas Mowen
7953d131ae
Fix monaco editor issues (#4724)
* Add sub filter for monaco editor

* Don't include files for unused languages

* Move necessary files and cleanup build

* Update sub filter for new location

* Still need to include default editor worker

* Fix error when model already exists
2022-12-17 17:55:41 -06:00
Nicolas Mowen
369299315f
Optimize nginx & recordings (#4688)
* Add segment duration metadata

* Use faststart only for kept segments

* Add more options for performance

* Build nginx locally

* Build nginx in dockerfile and enable threaded vod handling

* Use DASH instead of hls

* Allow player to continue on error

* Undo DASH change

* Fix typo

* Correct log

* Fix bad comments

* Fix indentation

* Preload stream

* remove unused

* Fix spacing

* Fix tabs / sspaces

* Retab

* More cleanup
2022-12-17 17:53:34 -06:00
Nate Meyer
ba3fbc99ba
Update method of aquiring signing keys for packages (#4649) 2022-12-09 06:39:02 -06:00
Felipe Santos
2a5ab77637
Log all services to memory (#4587)
* Log all services to RAM

* Fix tests workdir

* Rotate logs when they reach 10MB and keep only 1 archive

* Gracefully handle shutdown

* Add note about gracetime not working

* Fix logs permission, create fake logs for devcontainer

* Remove empty line

* Update docker/rootfs/etc/services.d/frigate/run

* Fix fake Frigate shebang
2022-12-07 07:47:40 -06:00
Felipe Santos
94a2b6bb88
Upgrade s6-overlay from 2.2.0.3 to 3.1.2.1 (#4584)
Also remove the unnecessary xz-utils from the final image.
2022-12-03 10:23:19 -06:00