mirror of
https://github.com/blakeblackshear/frigate.git
synced 2024-11-21 19:07:46 +01:00
c0bd3b362c
* Subclass Process for audio_process * Introduce custom mp.Process subclass In preparation to switch the multiprocessing startup method away from "fork", we cannot rely on os.fork cloning the log state at fork time. Instead, we have to set up logging before we run the business logic of each process. * Make camera_metrics into a class * Make ptz_metrics into a class * Fixed PtzMotionEstimator.ptz_metrics type annotation * Removed pointless variables * Do not start audio processor when no audio cameras are configured
65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
import argparse
|
|
import faulthandler
|
|
import signal
|
|
import sys
|
|
import threading
|
|
|
|
from pydantic import ValidationError
|
|
|
|
from frigate.app import FrigateApp
|
|
from frigate.config import FrigateConfig
|
|
from frigate.log import setup_logging
|
|
|
|
|
|
def main() -> None:
|
|
faulthandler.enable()
|
|
|
|
# Setup the logging thread
|
|
setup_logging()
|
|
|
|
threading.current_thread().name = "frigate"
|
|
|
|
# Make sure we exit cleanly on SIGTERM.
|
|
signal.signal(signal.SIGTERM, lambda sig, frame: sys.exit())
|
|
|
|
# Parse the cli arguments.
|
|
parser = argparse.ArgumentParser(
|
|
prog="Frigate",
|
|
description="An NVR with realtime local object detection for IP cameras.",
|
|
)
|
|
parser.add_argument("--validate-config", action="store_true")
|
|
args = parser.parse_args()
|
|
|
|
# Load the configuration.
|
|
try:
|
|
config = FrigateConfig.load()
|
|
except ValidationError as e:
|
|
print("*************************************************************")
|
|
print("*************************************************************")
|
|
print("*** Your config file is not valid! ***")
|
|
print("*** Please check the docs at ***")
|
|
print("*** https://docs.frigate.video/configuration/ ***")
|
|
print("*************************************************************")
|
|
print("*************************************************************")
|
|
print("*** Config Validation Errors ***")
|
|
print("*************************************************************")
|
|
for error in e.errors():
|
|
location = ".".join(str(item) for item in error["loc"])
|
|
print(f"{location}: {error['msg']}")
|
|
print("*************************************************************")
|
|
print("*** End Config Validation Errors ***")
|
|
print("*************************************************************")
|
|
sys.exit(1)
|
|
if args.validate_config:
|
|
print("*************************************************************")
|
|
print("*** Your config file is valid. ***")
|
|
print("*************************************************************")
|
|
sys.exit(0)
|
|
|
|
# Run the main application.
|
|
FrigateApp(config).start()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|