You've already forked FrameTour-RenderWorker
refactor(video): 重构视频裁切功能实现
- 将 crop_size 字段替换为 crop_scale 浮点数字段,支持缩放倍率控制 - 将 face_pos 字段重命名为 crop_pos,统一裁切位置控制 - 移除 zoom_cut 和 crop_size 字段,简化裁切参数 - 新增 _build_crop_filter 静态方法,统一构建裁切滤镜逻辑 - 优化裁切算法,支持按目标比例和倍率进行精确裁切 - 统一处理图像和视频的裁切逻辑,消除代码重复 - 添加 cropScale 参数的安全解析,防止非法数值导致错误 - 改进裁切位置解析,支持浮点数坐标并添加异常处理
This commit is contained in:
@@ -216,14 +216,13 @@ class RenderSpec:
|
||||
用于 RENDER_SEGMENT_VIDEO 任务,定义视频渲染参数。
|
||||
"""
|
||||
crop_enable: bool = False
|
||||
crop_size: Optional[str] = None
|
||||
crop_scale: float = 1.0
|
||||
speed: str = "1.0"
|
||||
lut_url: Optional[str] = None
|
||||
overlay_url: Optional[str] = None
|
||||
effects: Optional[str] = None
|
||||
zoom_cut: bool = False
|
||||
video_crop: Optional[str] = None
|
||||
face_pos: Optional[str] = None
|
||||
crop_pos: Optional[str] = None
|
||||
transitions: Optional[str] = None
|
||||
# 转场配置(PRD v2 新增)
|
||||
transition_in: Optional[TransitionConfig] = None # 入场转场
|
||||
@@ -234,16 +233,24 @@ class RenderSpec:
|
||||
"""从字典创建 RenderSpec"""
|
||||
if not data:
|
||||
return cls()
|
||||
|
||||
# 安全解析 cropScale:接受浮点数或字符串浮点数,非法值回退到 1.0
|
||||
try:
|
||||
crop_scale = float(data.get('cropScale', 1.0))
|
||||
if crop_scale <= 0 or not isfinite(crop_scale):
|
||||
crop_scale = 1.0
|
||||
except (ValueError, TypeError):
|
||||
crop_scale = 1.0
|
||||
|
||||
return cls(
|
||||
crop_enable=data.get('cropEnable', False),
|
||||
crop_size=data.get('cropSize'),
|
||||
crop_scale=crop_scale,
|
||||
speed=str(data.get('speed', '1.0')),
|
||||
lut_url=data.get('lutUrl'),
|
||||
overlay_url=data.get('overlayUrl'),
|
||||
effects=data.get('effects'),
|
||||
zoom_cut=data.get('zoomCut', False),
|
||||
video_crop=data.get('videoCrop'),
|
||||
face_pos=data.get('facePos'),
|
||||
crop_pos=data.get('cropPos'),
|
||||
transitions=data.get('transitions'),
|
||||
transition_in=TransitionConfig.from_dict(data.get('transitionIn')),
|
||||
transition_out=TransitionConfig.from_dict(data.get('transitionOut'))
|
||||
|
||||
Reference in New Issue
Block a user