From 2ed627890f5405877b6c1ce4308b306a25b23828 Mon Sep 17 00:00:00 2001 From: linyq Date: Tue, 6 May 2025 22:22:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(video):=20=E5=A2=9E=E5=8A=A04:3=20?= =?UTF-8?q?=E7=94=BB=E5=B9=85=E8=A7=86=E9=A2=91=E5=90=88=E5=B9=B6=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 VideoAspect 枚举中添加 landscape_2 (4:3) 和 portrait_2 (3:4) 选项 - 更新 combine_clip_videos 函数,支持 4:3 画幅的视频合并 - 修改任务处理流程,使用新的 merger_video 模块进行视频合并 --- app/models/schema.py | 2 ++ app/services/merger_video.py | 12 +++++++++--- app/services/task.py | 8 ++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/models/schema.py b/app/models/schema.py index 5e2e909..f10daef 100644 --- a/app/models/schema.py +++ b/app/models/schema.py @@ -20,7 +20,9 @@ class VideoConcatMode(str, Enum): class VideoAspect(str, Enum): landscape = "16:9" + landscape_2 = "4:3" portrait = "9:16" + portrait_2 = "3:4" square = "1:1" def to_resolution(self): diff --git a/app/services/merger_video.py b/app/services/merger_video.py index 8dbc1f2..7f8e590 100644 --- a/app/services/merger_video.py +++ b/app/services/merger_video.py @@ -18,16 +18,22 @@ from loguru import logger class VideoAspect(Enum): """视频宽高比枚举""" - portrait = "portrait" # 竖屏 9:16 - landscape = "landscape" # 横屏 16:9 - square = "square" # 方形 1:1 + landscape = "16:9" # 横屏 16:9 + landscape_2 = "4:3" + portrait = "9:16" # 竖屏 9:16 + portrait_2 = "3:4" + square = "1:1" # 方形 1:1 def to_resolution(self) -> Tuple[int, int]: """根据宽高比返回标准分辨率""" if self == VideoAspect.portrait: return 1080, 1920 # 竖屏 9:16 + elif self == VideoAspect.portrait_2: + return 720, 1280 # 竖屏 4:3 elif self == VideoAspect.landscape: return 1920, 1080 # 横屏 16:9 + elif self == VideoAspect.landscape_2: + return 1280, 720 # 横屏 4:3 elif self == VideoAspect.square: return 1080, 1080 # 方形 1:1 else: diff --git a/app/services/task.py b/app/services/task.py index 1f3e797..66a7761 100644 --- a/app/services/task.py +++ b/app/services/task.py @@ -9,7 +9,8 @@ from loguru import logger from app.config import config from app.models import const from app.models.schema import VideoConcatMode, VideoParams, VideoClipParams -from app.services import llm, material, subtitle, video, voice, audio_merger, subtitle_merger, clip_video +from app.services import (llm, material, subtitle, video, voice, audio_merger, + subtitle_merger, clip_video, merger_video) from app.services import state as sm from app.utils import utils @@ -292,11 +293,10 @@ def start_subclip(task_id: str, params: VideoClipParams, subclip_path_videos: di combined_video_path = path.join(utils.task_dir(task_id), f"merger.mp4") logger.info(f"\n\n## 5. 合并视频: => {combined_video_path}") - video.combine_clip_videos( - combined_video_path=combined_video_path, + merger_video.combine_clip_videos( + output_video_path=combined_video_path, video_paths=subclip_videos, video_ost_list=video_ost, - list_script=list_script, video_aspect=params.video_aspect, threads=params.n_threads # 多线程 )