50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
媒体适配器配置管理
|
||
"""
|
||
import os
|
||
|
||
class MediaConfig:
|
||
"""独立的配置管理,不依赖Django settings"""
|
||
|
||
def __init__(self, custom_config=None):
|
||
self.config = self._load_default_config()
|
||
if custom_config:
|
||
self.config.update(custom_config)
|
||
|
||
def _load_default_config(self):
|
||
"""加载默认配置"""
|
||
return {
|
||
# STT提供者配置
|
||
'stt_provider': os.getenv('MEDIA_STT_PROVIDER', 'openai'),
|
||
'stt_model': os.getenv('MEDIA_STT_MODEL', 'whisper-1'),
|
||
|
||
# 处理参数
|
||
'max_duration': int(os.getenv('MEDIA_MAX_DURATION', '7200')), # 最大时长(秒)
|
||
'segment_duration': int(os.getenv('MEDIA_SEGMENT_DURATION', '300')), # 分段长度(秒)
|
||
'enable_timestamps': os.getenv('MEDIA_ENABLE_TIMESTAMPS', 'true').lower() == 'true',
|
||
|
||
# 音频处理
|
||
'audio_format': os.getenv('MEDIA_AUDIO_FORMAT', 'mp3'),
|
||
'sample_rate': int(os.getenv('MEDIA_SAMPLE_RATE', '16000')),
|
||
|
||
# 视频处理
|
||
'extract_keyframes': os.getenv('MEDIA_EXTRACT_KEYFRAMES', 'false').lower() == 'true',
|
||
'video_codec': os.getenv('MEDIA_VIDEO_CODEC', 'h264'),
|
||
|
||
# 日志
|
||
'log_level': os.getenv('MEDIA_LOG_LEVEL', 'INFO'),
|
||
'log_file': os.getenv('MEDIA_LOG_FILE', 'media_adapter.log')
|
||
}
|
||
|
||
def get(self, key: str, default=None):
|
||
"""获取配置项"""
|
||
return self.config.get(key, default)
|
||
|
||
def set(self, key: str, value):
|
||
"""设置配置项"""
|
||
self.config[key] = value
|
||
|
||
def update(self, config_dict: dict):
|
||
"""批量更新配置"""
|
||
self.config.update(config_dict) |