feat: 转场特效引擎 — TransitionEngine + 14种转场预设 + 时长边界校验 + 降级策略
核心能力: - TransitionEngine 抽象层:TransitionType枚举 + TransitionConfig配置 + 引擎类 - 14种转场预设:fade/dissolve/zoom/circlecrop/rectcrop + slide*4 + wipe*4 - 转场时长边界校验:0.3s~2s范围,超出自动钳制 - 降级策略:不支持的转场自动fallback到硬切(cut),不阻断渲染 - 别名支持:slide_left/slide-left/crossfade/wipe/zoomin等多种写法 系统集成: - UnifiedRenderService 接入 TransitionEngine,替换直接xfade调用 - EditPlanClip 领域模型新增 transition_duration 字段 - SQLAlchemy model + repository 同步新增列 - API层 Schema + Service 同步支持 transition_duration - 向前兼容:transition_duration=0 表示使用全局默认值 测试: - 54个新增单测:枚举/配置解析/边界校验/降级策略/滤镜链构建/集成验证 - 84个渲染测试 + 16个适配器测试全绿,无回归
This commit is contained in:
@@ -25,8 +25,14 @@ DEFAULT_FPS = 25
|
||||
|
||||
# xfade 转场映射:transition_effect 名称 → FFmpeg xfade transition 名称
|
||||
# 键同时支持 TransitionEffect 枚举值和字符串名称(向后兼容)
|
||||
# "cut" 为特殊值:硬切,不使用 xfade(由调用方特殊处理)
|
||||
XFADE_TRANSITION_MAP: dict[str, str] = {
|
||||
# 基础
|
||||
"fade": "fade",
|
||||
"dissolve": "dissolve",
|
||||
"crossfade": "dissolve",
|
||||
"crossdissolve": "dissolve",
|
||||
# 滑入系列
|
||||
"slideleft": "slideleft",
|
||||
"slide_left": "slideleft",
|
||||
"slideright": "slideright",
|
||||
@@ -35,9 +41,22 @@ XFADE_TRANSITION_MAP: dict[str, str] = {
|
||||
"slide_up": "slideup",
|
||||
"slidedown": "slidedown",
|
||||
"slide_down": "slidedown",
|
||||
"dissolve": "dissolve",
|
||||
"wipe": "wipeleft",
|
||||
"slide": "slideleft", # 默认向左滑
|
||||
# 缩放
|
||||
"zoom": "zoomin",
|
||||
"zoomin": "zoomin",
|
||||
"zoomout": "zoomout",
|
||||
# 擦除系列
|
||||
"wipe": "wipeleft", # 默认向左擦
|
||||
"wipeleft": "wipeleft",
|
||||
"wiperight": "wiperight",
|
||||
"wipeup": "wipeup",
|
||||
"wipedown": "wipedown",
|
||||
# 特殊效果
|
||||
"circlecrop": "circlecrop",
|
||||
"circle": "circlecrop",
|
||||
"rectcrop": "rectcrop",
|
||||
"rect": "rectcrop",
|
||||
}
|
||||
|
||||
DEFAULT_TRANSITION_DURATION = 0.5
|
||||
|
||||
Reference in New Issue
Block a user