refactor(core): 移除旧版 FFmpeg 业务逻辑并重构常量配置

- 删除 biz/ffmpeg.py 和 biz/task.py 旧版业务模块
- 删除 entity/ffmpeg.py FFmpeg 任务实体类
- 删除 config/__init__.py 旧版配置初始化
- 更新 constant/__init__.py 常量定义,从 v1/v2 版本改为统一版本
- 修改 handlers/base.py 基础处理器,替换 OSS 相关导入为存储服务
- 添加 subprocess_args 工具函数支持跨平台进程参数配置
- 新增 probe_video_info 函数用于视频信息探测
- 新增 probe_duration_json 函数用于媒体时长探测
This commit is contained in:
2026-01-12 17:00:48 +08:00
parent 24de32e6bb
commit 2911a4eff8
21 changed files with 570 additions and 1958 deletions

View File

@@ -7,40 +7,20 @@
import os
import platform
from datetime import datetime
import subprocess
from typing import Optional
import psutil
from constant import SUPPORT_FEATURE, SOFTWARE_VERSION, V2_DEFAULT_CAPABILITIES
from constant import SOFTWARE_VERSION, DEFAULT_CAPABILITIES
def get_sys_info():
"""
获取系统信息(v1 格式)
获取系统信息
Returns:
dict: 系统信息字典
"""
info = {
'version': SOFTWARE_VERSION,
'client_datetime': datetime.now().isoformat(),
'platform': platform.system(),
'runtime_version': 'Python ' + platform.python_version(),
'cpu_count': os.cpu_count(),
'cpu_usage': psutil.cpu_percent(),
'memory_total': psutil.virtual_memory().total,
'memory_available': psutil.virtual_memory().available,
'support_feature': SUPPORT_FEATURE
}
return info
def get_sys_info_v2():
"""
获取系统信息(v2 格式)
Returns:
dict: v2 API 所需的系统信息字典
"""
mem = psutil.virtual_memory()
info = {
@@ -51,10 +31,11 @@ def get_sys_info_v2():
'memoryAvailable': f"{mem.available // (1024**3)}GB",
'platform': platform.system(),
'pythonVersion': platform.python_version(),
'version': SOFTWARE_VERSION,
}
# 尝试获取 GPU 信息
gpu_info = _get_gpu_info()
gpu_info = get_gpu_info()
if gpu_info:
info['gpu'] = gpu_info
@@ -68,10 +49,10 @@ def get_capabilities():
Returns:
list: 能力列表
"""
return V2_DEFAULT_CAPABILITIES.copy()
return DEFAULT_CAPABILITIES.copy()
def _get_gpu_info():
def get_gpu_info() -> Optional[str]:
"""
尝试获取 GPU 信息
@@ -79,7 +60,6 @@ def _get_gpu_info():
str: GPU 信息,失败返回 None
"""
try:
import subprocess
# 尝试使用 nvidia-smi
result = subprocess.run(
['nvidia-smi', '--query-gpu=name', '--format=csv,noheader'],
@@ -94,3 +74,30 @@ def _get_gpu_info():
pass
return None
def get_ffmpeg_version() -> str:
"""
获取 FFmpeg 版本
Returns:
str: FFmpeg 版本号
"""
try:
result = subprocess.run(
['ffmpeg', '-version'],
capture_output=True,
text=True,
timeout=5
)
if result.returncode == 0:
first_line = result.stdout.split('\n')[0]
# 解析版本号,例如 "ffmpeg version 6.0 ..."
parts = first_line.split()
for i, part in enumerate(parts):
if part == 'version' and i + 1 < len(parts):
return parts[i + 1]
except Exception:
pass
return 'unknown'