import os def _get_bool(name: str, default: bool) -> bool: value = os.getenv(name) if value is None: return default return value.strip().lower() in {"1", "true", "yes", "on"} def _get_int(name: str, default: int) -> int: value = os.getenv(name) if value is None: return default try: return int(value) except ValueError: return default class Settings: CAMERA_CONFIG = { "cam01": "rtsp://admin:password@192.168.1.10:554/live/ch0", # 可扩展多个摄像头 } OUTPUT_DIR = os.getenv("OUTPUT_DIR", "./records") MAX_TASK_SECONDS = _get_int("MAX_TASK_SECONDS", 60 * 10) # 10 分钟超时 # 日志配置 LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") # 存储配置 STORAGE_TYPE = os.getenv("STORAGE_TYPE", "minio").strip().lower() # 上传后是否删掉本地视频 DELETE_LOCAL_AFTER_UPLOAD = _get_bool("DELETE_LOCAL_AFTER_UPLOAD", False) # MinIO 配置,默认值对齐你提供的测试代码 MINIO_ENDPOINT = os.getenv("MINIO_ENDPOINT", "192.168.77.249:9000") MINIO_ACCESS_KEY = os.getenv("MINIO_ACCESS_KEY", "pZEwCGnpNN05KPnmC2Yh") MINIO_SECRET_KEY = os.getenv("MINIO_SECRET_KEY", "KfJRuWiv9pVxhIMcFqbkv8hZT9SnNTZ6LPx592D4") MINIO_SECURE = _get_bool("MINIO_SECURE", False) MINIO_BUCKET = os.getenv("MINIO_BUCKET", "grading") MINIO_BASE_PREFIX = os.getenv("MINIO_BASE_PREFIX", "monitor_video_data").strip("/\\") MINIO_AUTO_CREATE_BUCKET = _get_bool("MINIO_AUTO_CREATE_BUCKET", True) # FFmpeg 录像配置 FFMPEG_PATH = os.getenv("FFMPEG_PATH", "ffmpeg") FFMPEG_RTSP_TRANSPORT = os.getenv("FFMPEG_RTSP_TRANSPORT", "tcp") FFMPEG_PRESET = os.getenv("FFMPEG_PRESET", "veryfast") FFMPEG_LOGLEVEL = os.getenv("FFMPEG_LOGLEVEL", "error") settings = Settings()