frigate/transcode_proxy/config.py
2026-03-17 10:46:42 -07:00

45 lines
1.7 KiB
Python

"""Configuration from environment."""
import os
from dataclasses import dataclass, field
@dataclass
class Config:
"""Proxy configuration."""
# Upstream Frigate VOD base URL (e.g. http://nginx:80 or http://127.0.0.1:5001)
upstream_base: str = field(
default_factory=lambda: os.environ.get("TRANSCODE_PROXY_UPSTREAM", "http://127.0.0.1:80")
)
# Optional path prefix the proxy is mounted at (e.g. /vod-transcoded); strip when forwarding
path_prefix: str = field(
default_factory=lambda: os.environ.get("TRANSCODE_PROXY_PATH_PREFIX", "").rstrip("/")
)
# Host/port to bind
host: str = field(default_factory=lambda: os.environ.get("TRANSCODE_PROXY_HOST", "0.0.0.0"))
port: int = field(
default_factory=lambda: int(os.environ.get("TRANSCODE_PROXY_PORT", "5010"))
)
# In-memory cache max size in bytes
cache_max_bytes: int = field(
default_factory=lambda: int(os.environ.get("TRANSCODE_PROXY_CACHE_MB", "500")) * 1024 * 1024
)
# FFmpeg binary
ffmpeg_path: str = field(
default_factory=lambda: os.environ.get("TRANSCODE_PROXY_FFMPEG", "ffmpeg")
)
# H.264 bitrate for transcoded segments
h264_bitrate: str = field(
default_factory=lambda: os.environ.get("TRANSCODE_PROXY_H264_BITRATE", "128k")
)
# Max output size for transcoded playback; preserves aspect ratio and will not upscale
max_width: int = field(
default_factory=lambda: int(os.environ.get("TRANSCODE_PROXY_MAX_WIDTH", "640"))
)
max_height: int = field(
default_factory=lambda: int(os.environ.get("TRANSCODE_PROXY_MAX_HEIGHT", "480"))
)
config = Config()