mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	On startup, the object processing pipeline would be delayed for 10ms every iteration through the loop while the end event subscriber blocked. For users with large numbers of cameras and a fair amount of detected objects, this would cause the detected objects queue length to rise and frames to be eventually dropped, leading to processing delays, incorrect frame times applied to thumbnail_data, and other seemingly unexplainable things.
		
			
				
	
	
		
			136 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import re
 | |
| 
 | |
| INSTALL_DIR = "/opt/frigate"
 | |
| CONFIG_DIR = "/config"
 | |
| DEFAULT_DB_PATH = f"{CONFIG_DIR}/frigate.db"
 | |
| MODEL_CACHE_DIR = f"{CONFIG_DIR}/model_cache"
 | |
| BASE_DIR = "/media/frigate"
 | |
| CLIPS_DIR = f"{BASE_DIR}/clips"
 | |
| EXPORT_DIR = f"{BASE_DIR}/exports"
 | |
| FACE_DIR = f"{CLIPS_DIR}/faces"
 | |
| THUMB_DIR = f"{CLIPS_DIR}/thumbs"
 | |
| RECORD_DIR = f"{BASE_DIR}/recordings"
 | |
| BIRDSEYE_PIPE = "/tmp/cache/birdseye"
 | |
| CACHE_DIR = "/tmp/cache"
 | |
| FRIGATE_LOCALHOST = "http://127.0.0.1:5000"
 | |
| PLUS_ENV_VAR = "PLUS_API_KEY"
 | |
| PLUS_API_HOST = "https://api.frigate.video"
 | |
| 
 | |
| SHM_FRAMES_VAR = "SHM_MAX_FRAMES"
 | |
| 
 | |
| # Attribute & Object constants
 | |
| 
 | |
| DEFAULT_ATTRIBUTE_LABEL_MAP = {
 | |
|     "person": ["amazon", "face"],
 | |
|     "car": [
 | |
|         "amazon",
 | |
|         "an_post",
 | |
|         "dhl",
 | |
|         "dpd",
 | |
|         "fedex",
 | |
|         "gls",
 | |
|         "license_plate",
 | |
|         "nzpost",
 | |
|         "postnl",
 | |
|         "postnord",
 | |
|         "purolator",
 | |
|         "ups",
 | |
|         "usps",
 | |
|     ],
 | |
|     "motorcycle": ["license_plate"],
 | |
| }
 | |
| LABEL_CONSOLIDATION_MAP = {
 | |
|     "car": 0.8,
 | |
|     "face": 0.5,
 | |
| }
 | |
| LABEL_CONSOLIDATION_DEFAULT = 0.9
 | |
| LABEL_NMS_MAP = {
 | |
|     "car": 0.6,
 | |
| }
 | |
| LABEL_NMS_DEFAULT = 0.4
 | |
| 
 | |
| # Audio constants
 | |
| 
 | |
| AUDIO_DURATION = 0.975
 | |
| AUDIO_FORMAT = "s16le"
 | |
| AUDIO_MAX_BIT_RANGE = 32768.0
 | |
| AUDIO_SAMPLE_RATE = 16000
 | |
| AUDIO_MIN_CONFIDENCE = 0.5
 | |
| 
 | |
| # DB constants
 | |
| 
 | |
| MAX_WAL_SIZE = 10  # MB
 | |
| 
 | |
| # Ffmpeg constants
 | |
| 
 | |
| DEFAULT_FFMPEG_VERSION = os.environ.get("DEFAULT_FFMPEG_VERSION", "")
 | |
| INCLUDED_FFMPEG_VERSIONS = os.environ.get("INCLUDED_FFMPEG_VERSIONS", "").split(":")
 | |
| LIBAVFORMAT_VERSION_MAJOR = int(os.environ.get("LIBAVFORMAT_VERSION_MAJOR", "59"))
 | |
| FFMPEG_HWACCEL_NVIDIA = "preset-nvidia"
 | |
| FFMPEG_HWACCEL_VAAPI = "preset-vaapi"
 | |
| FFMPEG_HWACCEL_VULKAN = "preset-vulkan"
 | |
| FFMPEG_HVC1_ARGS = ["-tag:v", "hvc1"]
 | |
| 
 | |
| # Regex constants
 | |
| 
 | |
| REGEX_CAMERA_NAME = r"^[a-zA-Z0-9_-]+$"
 | |
| REGEX_RTSP_CAMERA_USER_PASS = r":\/\/[a-zA-Z0-9_-]+:[\S]+@"
 | |
| REGEX_HTTP_CAMERA_USER_PASS = r"user=[a-zA-Z0-9_-]+&password=[\S]+"
 | |
| REGEX_JSON = re.compile(r"^\s*\{")
 | |
| 
 | |
| # Known Driver Names
 | |
| 
 | |
| DRIVER_ENV_VAR = "LIBVA_DRIVER_NAME"
 | |
| DRIVER_AMD = "radeonsi"
 | |
| DRIVER_INTEL_i965 = "i965"
 | |
| DRIVER_INTEL_iHD = "iHD"
 | |
| 
 | |
| # Preview Values
 | |
| 
 | |
| PREVIEW_FRAME_TYPE = "webp"
 | |
| 
 | |
| # Record Values
 | |
| 
 | |
| CACHE_SEGMENT_FORMAT = "%Y%m%d%H%M%S%z"
 | |
| MAX_PRE_CAPTURE = 60
 | |
| MAX_SEGMENT_DURATION = 600
 | |
| MAX_SEGMENTS_IN_CACHE = 6
 | |
| MAX_PLAYLIST_SECONDS = 7200  # support 2 hour segments for a single playlist to account for cameras with inconsistent segment times
 | |
| 
 | |
| # Internal Comms Topics
 | |
| 
 | |
| INSERT_MANY_RECORDINGS = "insert_many_recordings"
 | |
| INSERT_PREVIEW = "insert_preview"
 | |
| REQUEST_REGION_GRID = "request_region_grid"
 | |
| UPSERT_REVIEW_SEGMENT = "upsert_review_segment"
 | |
| CLEAR_ONGOING_REVIEW_SEGMENTS = "clear_ongoing_review_segments"
 | |
| UPDATE_CAMERA_ACTIVITY = "update_camera_activity"
 | |
| UPDATE_EVENT_DESCRIPTION = "update_event_description"
 | |
| UPDATE_MODEL_STATE = "update_model_state"
 | |
| UPDATE_EMBEDDINGS_REINDEX_PROGRESS = "handle_embeddings_reindex_progress"
 | |
| NOTIFICATION_TEST = "notification_test"
 | |
| 
 | |
| # Stats Values
 | |
| 
 | |
| FREQUENCY_STATS_POINTS = 15
 | |
| 
 | |
| # Autotracking
 | |
| 
 | |
| AUTOTRACKING_MAX_AREA_RATIO = 0.6
 | |
| AUTOTRACKING_MOTION_MIN_DISTANCE = 20
 | |
| AUTOTRACKING_MOTION_MAX_POINTS = 500
 | |
| AUTOTRACKING_MAX_MOVE_METRICS = 500
 | |
| AUTOTRACKING_ZOOM_OUT_HYSTERESIS = 1.1
 | |
| AUTOTRACKING_ZOOM_IN_HYSTERESIS = 0.95
 | |
| AUTOTRACKING_ZOOM_EDGE_THRESHOLD = 0.05
 | |
| 
 | |
| # Auth
 | |
| 
 | |
| JWT_SECRET_ENV_VAR = "FRIGATE_JWT_SECRET"
 | |
| PASSWORD_HASH_ALGORITHM = "pbkdf2_sha256"
 | |
| 
 | |
| # Queues
 | |
| 
 | |
| FAST_QUEUE_TIMEOUT = 0.00001  # seconds
 |