Spaces:
Sleeping
Sleeping
Chandima Prabhath
Fix DEBUG flag and TEMP_DIR path in EncodingConfig; enhance logging in FFmpegEncoder
21b1e7f
| import os | |
| from typing import List, Dict | |
| import os | |
| from redis import from_url, RedisError | |
| from dotenv import load_dotenv | |
| import time | |
| import logging | |
| load_dotenv() | |
| class EncodingConfig: | |
| DEBUG = os.getenv("DEBUG", "True") == "True" | |
| TEMP_DIR = "/tmp" | |
| LOG_LEVEL = logging.DEBUG if DEBUG else logging.INFO | |
| logging.basicConfig(level=EncodingConfig.LOG_LEVEL) | |
| logger = logging.getLogger(__name__) | |
| class RedisConfig: | |
| URL = os.getenv("REDIS_URL") | |
| CONN_POOL = None # Will be initialized on first use | |
| QUEUE_NAME = "video_encoding_queue" | |
| def get_connection(cls): | |
| if not cls.CONN_POOL: | |
| while True: | |
| try: | |
| cls.CONN_POOL = from_url(cls.URL, max_connections=20, ssl_cert_reqs=None) | |
| logger.info("Successfully connected to Redis") | |
| break | |
| except RedisError as e: | |
| logger.error(f"Could not connect to Redis instance: {e}. Retrying in 2 seconds...") | |
| time.sleep(2) | |
| return cls.CONN_POOL | |
| HMAC_SECRET = os.getenv("VIDEO_HMAC_SECRET", "default-secret-change-me") | |
| RESOLUTIONS: List[Dict] = [ | |
| { | |
| "name": "1080p", | |
| "width": 1920, | |
| "height": 1080, | |
| "video_bitrate": "5000k", | |
| "audio_bitrate": "128k", | |
| "codec": "libx264", | |
| "profile": "high", | |
| "preset": "slow" | |
| }, | |
| { | |
| "name": "720p", | |
| "width": 1280, | |
| "height": 720, | |
| "video_bitrate": "2500k", | |
| "audio_bitrate": "128k", | |
| "codec": "libx264", | |
| "profile": "main", | |
| "preset": "medium" | |
| }, | |
| { | |
| "name": "480p", | |
| "width": 854, | |
| "height": 480, | |
| "video_bitrate": "1000k", | |
| "audio_bitrate": "96k", | |
| "codec": "libx264", | |
| "profile": "baseline", | |
| "preset": "fast" | |
| }, | |
| { | |
| "name": "240p", | |
| "width": 426, | |
| "height": 240, | |
| "video_bitrate": "400k", | |
| "audio_bitrate": "64k", | |
| "codec": "libx264", | |
| "profile": "baseline", | |
| "preset": "veryfast" | |
| } | |
| ] | |
| def validate_resolutions(cls): | |
| for res in cls.RESOLUTIONS: | |
| if not all(key in res for key in ['name', 'width', 'height', 'video_bitrate']): | |
| raise ValueError(f"Invalid resolution config: {res}") | |