Files
frigate/frigate/const.py
T

152 lines
3.8 KiB
Python
Raw Normal View History

2025-02-20 22:07:41 -03:00
import os
import re
2025-03-01 05:35:09 +01:00
INSTALL_DIR = "/opt/frigate"
CONFIG_DIR = "/config"
DEFAULT_DB_PATH = f"{CONFIG_DIR}/frigate.db"
2023-04-30 13:32:36 -05:00
MODEL_CACHE_DIR = f"{CONFIG_DIR}/model_cache"
2021-06-06 21:24:36 -04:00
BASE_DIR = "/media/frigate"
CLIPS_DIR = f"{BASE_DIR}/clips"
EXPORT_DIR = f"{BASE_DIR}/exports"
2024-10-22 16:05:48 -06:00
FACE_DIR = f"{CLIPS_DIR}/faces"
2025-02-18 07:46:29 -07:00
THUMB_DIR = f"{CLIPS_DIR}/thumbs"
2024-10-22 16:05:48 -06:00
RECORD_DIR = f"{BASE_DIR}/recordings"
2025-07-07 09:03:57 -05:00
TRIGGER_DIR = f"{CLIPS_DIR}/triggers"
2022-12-31 07:54:10 -07:00
BIRDSEYE_PIPE = "/tmp/cache/birdseye"
2021-02-17 07:23:32 -06:00
CACHE_DIR = "/tmp/cache"
2023-07-01 07:18:33 -06:00
FRIGATE_LOCALHOST = "http://127.0.0.1:5000"
2022-04-03 15:00:11 -05:00
PLUS_ENV_VAR = "PLUS_API_KEY"
PLUS_API_HOST = "https://api.frigate.video"
2024-12-01 10:39:35 -06:00
SHM_FRAMES_VAR = "SHM_MAX_FRAMES"
# Attribute & Object constants
2024-09-28 07:49:04 -06:00
DEFAULT_ATTRIBUTE_LABEL_MAP = {
"person": ["amazon", "face"],
2024-10-16 15:22:34 -06:00
"car": [
"amazon",
"an_post",
2025-07-17 08:29:50 -05:00
"canada_post",
2024-10-16 15:22:34 -06:00
"dhl",
"dpd",
"fedex",
"gls",
"license_plate",
"nzpost",
"postnl",
"postnord",
"purolator",
2025-07-17 08:29:50 -05:00
"royal_mail",
2024-10-16 15:22:34 -06:00
"ups",
"usps",
],
2025-04-15 10:40:12 -05:00
"motorcycle": ["license_plate"],
}
LABEL_CONSOLIDATION_MAP = {
"car": 0.8,
"face": 0.5,
}
LABEL_CONSOLIDATION_DEFAULT = 0.9
2024-02-05 16:52:06 -07:00
LABEL_NMS_MAP = {
"car": 0.6,
}
LABEL_NMS_DEFAULT = 0.4
# Audio constants
2023-07-01 07:18:33 -06:00
AUDIO_DURATION = 0.975
AUDIO_FORMAT = "s16le"
AUDIO_MAX_BIT_RANGE = 32768.0
AUDIO_SAMPLE_RATE = 16000
AUDIO_MIN_CONFIDENCE = 0.5
2023-07-01 07:18:33 -06:00
# DB constants
MAX_WAL_SIZE = 10 # MB
# Ffmpeg constants
2024-01-01 09:36:40 -06:00
2025-02-20 22:07:41 -03:00
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"))
2024-01-01 09:36:40 -06:00
FFMPEG_HWACCEL_NVIDIA = "preset-nvidia"
FFMPEG_HWACCEL_VAAPI = "preset-vaapi"
2024-09-05 18:27:32 -06:00
FFMPEG_HWACCEL_VULKAN = "preset-vulkan"
2025-07-21 14:07:51 +02:00
FFMPEG_HWACCEL_RKMPP = "preset-rkmpp"
FFMPEG_HWACCEL_AMF = "preset-amd-amf"
FFMPEG_HVC1_ARGS = ["-tag:v", "hvc1"]
2024-01-01 09:36:40 -06:00
# Regex constants
2023-05-29 12:31:17 +02:00
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"
2024-03-11 17:31:05 -06:00
# Preview Values
PREVIEW_FRAME_TYPE = "webp"
# Record Values
CACHE_SEGMENT_FORMAT = "%Y%m%d%H%M%S%z"
2023-11-18 14:37:06 -07:00
MAX_PRE_CAPTURE = 60
MAX_SEGMENT_DURATION = 600
2023-11-18 14:37:06 -07:00
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
2023-07-26 04:55:08 -06:00
# Internal Comms Topics
INSERT_MANY_RECORDINGS = "insert_many_recordings"
INSERT_PREVIEW = "insert_preview"
2023-10-18 17:21:52 -06:00
REQUEST_REGION_GRID = "request_region_grid"
UPSERT_REVIEW_SEGMENT = "upsert_review_segment"
2024-04-24 07:44:28 -06:00
CLEAR_ONGOING_REVIEW_SEGMENTS = "clear_ongoing_review_segments"
UPDATE_CAMERA_ACTIVITY = "update_camera_activity"
2025-08-25 13:40:21 -05:00
UPDATE_AUDIO_ACTIVITY = "update_audio_activity"
EXPIRE_AUDIO_ACTIVITY = "expire_audio_activity"
2025-11-24 07:34:56 -06:00
UPDATE_AUDIO_TRANSCRIPTION_STATE = "update_audio_transcription_state"
2024-06-21 17:30:19 -04:00
UPDATE_EVENT_DESCRIPTION = "update_event_description"
2025-08-10 05:57:54 -06:00
UPDATE_REVIEW_DESCRIPTION = "update_review_description"
UPDATE_MODEL_STATE = "update_model_state"
UPDATE_EMBEDDINGS_REINDEX_PROGRESS = "handle_embeddings_reindex_progress"
2025-06-08 13:06:17 -05:00
UPDATE_BIRDSEYE_LAYOUT = "update_birdseye_layout"
2025-02-10 20:47:15 -06:00
NOTIFICATION_TEST = "notification_test"
# IO Nice Values
PROCESS_PRIORITY_HIGH = 0
PROCESS_PRIORITY_MED = 10
PROCESS_PRIORITY_LOW = 19
# Stats Values
FREQUENCY_STATS_POINTS = 15
# Autotracking
2023-11-01 06:12:43 -05:00
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
2024-05-18 11:36:13 -05:00
# Auth
JWT_SECRET_ENV_VAR = "FRIGATE_JWT_SECRET"
PASSWORD_HASH_ALGORITHM = "pbkdf2_sha256"
2025-04-30 08:42:53 -05:00
# Queues
FAST_QUEUE_TIMEOUT = 0.00001 # seconds