This commit is contained in:
2025-09-24 10:17:11 +08:00
parent dfb07d679f
commit c055a68592
31 changed files with 1357 additions and 811 deletions

View File

@@ -15,9 +15,10 @@ from util import ffmpeg, oss
from util.ffmpeg import fade_out_audio
from telemetry import get_tracer
logger = logging.getLogger('biz/ffmpeg')
logger = logging.getLogger("biz/ffmpeg")
_render_service = None
def _get_render_service():
"""获取渲染服务实例"""
global _render_service
@@ -31,19 +32,28 @@ def parse_ffmpeg_task(task_info, template_info):
解析FFmpeg任务 - 保留用于向后兼容
实际处理逻辑已迁移到 services.TaskService.create_render_task
"""
logger.warning("parse_ffmpeg_task is deprecated, use TaskService.create_render_task instead")
logger.warning(
"parse_ffmpeg_task is deprecated, use TaskService.create_render_task instead"
)
# 使用新的任务服务创建任务
from services import DefaultTaskService, DefaultRenderService, DefaultTemplateService
from services import (
DefaultTaskService,
DefaultRenderService,
DefaultTemplateService,
)
render_service = DefaultRenderService()
template_service = DefaultTemplateService()
task_service = DefaultTaskService(render_service, template_service)
# 创建新的渲染任务
render_task = task_service.create_render_task(task_info, template_info)
# 为了向后兼容,创建一个FfmpegTask包装器
ffmpeg_task = FfmpegTask(render_task.input_files, output_file=render_task.output_file)
ffmpeg_task = FfmpegTask(
render_task.input_files, output_file=render_task.output_file
)
ffmpeg_task.resolution = render_task.resolution
ffmpeg_task.frame_rate = render_task.frame_rate
ffmpeg_task.annexb = render_task.annexb
@@ -54,7 +64,7 @@ def parse_ffmpeg_task(task_info, template_info):
ffmpeg_task.luts = render_task.luts
ffmpeg_task.audios = render_task.audios
ffmpeg_task.overlays = render_task.overlays
return ffmpeg_task
@@ -64,14 +74,20 @@ def parse_video(source, task_params, template_info):
logger.warning("parse_video is deprecated, functionality moved to TaskService")
return source, {}
def check_placeholder_exist(placeholder_id, task_params):
"""已迁移到 TaskService._check_placeholder_exist_with_count"""
logger.warning("check_placeholder_exist is deprecated, functionality moved to TaskService")
"""已迁移到 TaskService._check_placeholder_exist_with_count"""
logger.warning(
"check_placeholder_exist is deprecated, functionality moved to TaskService"
)
return placeholder_id in task_params
def check_placeholder_exist_with_count(placeholder_id, task_params, required_count=1):
"""已迁移到 TaskService._check_placeholder_exist_with_count"""
logger.warning("check_placeholder_exist_with_count is deprecated, functionality moved to TaskService")
logger.warning(
"check_placeholder_exist_with_count is deprecated, functionality moved to TaskService"
)
if placeholder_id in task_params:
new_sources = task_params.get(placeholder_id, [])
if isinstance(new_sources, list):
@@ -88,14 +104,14 @@ def start_ffmpeg_task(ffmpeg_task):
# 使用新的渲染服务
render_service = _get_render_service()
result = render_service.render(ffmpeg_task)
if result:
span.set_status(Status(StatusCode.OK))
else:
span.set_status(Status(StatusCode.ERROR))
return result
except Exception as e:
span.set_status(Status(StatusCode.ERROR))
logger.error(f"FFmpeg task failed: {e}", exc_info=True)
@@ -104,7 +120,9 @@ def start_ffmpeg_task(ffmpeg_task):
def clear_task_tmp_file(ffmpeg_task):
"""清理临时文件 - 已迁移到 TaskService._cleanup_temp_files"""
logger.warning("clear_task_tmp_file is deprecated, functionality moved to TaskService")
logger.warning(
"clear_task_tmp_file is deprecated, functionality moved to TaskService"
)
try:
template_dir = os.getenv("TEMPLATE_DIR", "")
output_file = ffmpeg_task.get_output_file()
@@ -124,5 +142,3 @@ def probe_video_info(ffmpeg_task):
"""获取视频长度宽度和时长 - 使用新的渲染服务"""
render_service = _get_render_service()
return render_service.get_video_info(ffmpeg_task.get_output_file())

View File

@@ -12,6 +12,7 @@ logger = logging.getLogger(__name__)
# 确保服务已注册
register_default_services()
def start_task(task_info):
"""启动任务处理(保持向后兼容的接口)"""
tracer = get_tracer(__name__)
@@ -19,19 +20,19 @@ def start_task(task_info):
try:
# 使用服务容器获取任务服务
task_service = get_task_service()
# 使用新的任务服务处理
result = task_service.process_task(task_info)
if result:
span.set_status(Status(StatusCode.OK))
logger.info("Task completed successfully: %s", task_info.get("id"))
else:
span.set_status(Status(StatusCode.ERROR))
logger.error("Task failed: %s", task_info.get("id"))
return None # 保持原有返回值格式
except Exception as e:
span.set_status(Status(StatusCode.ERROR))
logger.error("Task processing failed: %s", e, exc_info=True)