from pydantic_settings import BaseSettings from typing import Literal class Settings(BaseSettings): database_url: str = "sqlite+aiosqlite:///./data.db" admin_password: str = "admin123" media_origin_host: str = "127.0.0.1" media_origin_rtmp_port: int = 1935 media_origin_api_port: int = 9997 media_origin_hls_port: int = 8888 replay_media_dir: str = "/workspace/media" hls_segment_seconds: int = 4 edge_nodes: list[dict] = [ { "id": "default", "name": "Origin (Default)", "host": "127.0.0.1", "hls_port": 8888, "api_port": 9997, "weight": 100, "enabled": True, "subnet": "0.0.0.0/0", "is_origin": True, }, ] load_balance_strategy: Literal["round-robin", "weighted", "least-conn", "subnet"] = "subnet" qualities: list[dict] = [ {"label": "1080p", "width": 1920, "height": 1080, "bitrate": "5000k"}, {"label": "720p", "width": 1280, "height": 720, "bitrate": "2500k"}, {"label": "480p", "width": 854, "height": 480, "bitrate": "1000k"}, {"label": "360p", "width": 640, "height": 360, "bitrate": "600k"}, ] transcode_profiles: dict[str, list[dict]] = { "standard": qualities, "bandwidth-saver": [ {"label": "720p", "width": 1280, "height": 720, "bitrate": "1800k"}, {"label": "480p", "width": 854, "height": 480, "bitrate": "800k"}, {"label": "360p", "width": 640, "height": 360, "bitrate": "450k"}, ], } multicast_enabled: bool = True multicast_address_base: str = "239.0.0.1" multicast_port_base: int = 5000 brand_name: str = "StreamCore" brand_tagline: str = "Enterprise Streaming Platform" brand_logo_url: str = "" model_config = {"env_prefix": "LS_"} settings = Settings()