mirror of
https://github.com/Hommy-master/capcut-mate.git
synced 2026-08-31 02:03:16 +08:00
统一转场时长的处理方式。
This commit is contained in:
@@ -59,7 +59,7 @@ def add_images(
|
||||
"out_animation_duration": "", // [可选] 出场动画时长(微秒)
|
||||
"loop_animation_duration": "", // [可选] 循环动画时长(微秒)
|
||||
"transition": "", // [可选] 转场效果类型
|
||||
"transition_duration": 500000 // [可选] 转场效果时长(微秒,范围100000-2500000)
|
||||
"transition_duration": "" // [可选] 转场时长(微秒),未指定则用转场类型默认时长
|
||||
}
|
||||
]
|
||||
alpha: 全局透明度[0, 1],默认值为1.0
|
||||
@@ -432,8 +432,10 @@ def add_image_to_draft(
|
||||
|
||||
if transition_enum:
|
||||
transition_duration = image.get('transition_duration')
|
||||
if transition_duration is not None:
|
||||
if transition_duration is not None and transition_duration != "":
|
||||
transition_duration = int(transition_duration)
|
||||
else:
|
||||
transition_duration = None
|
||||
video_segment.add_transition(transition_enum, duration=transition_duration)
|
||||
logger.info(f"Successfully added transition '{image['transition']}' to image segment")
|
||||
else:
|
||||
@@ -526,7 +528,7 @@ def parse_image_data(json_str: str) -> List[Dict[str, Any]]:
|
||||
"out_animation_duration": "", // [可选] 出场动画时长(微秒)
|
||||
"loop_animation_duration": "", // [可选] 循环动画时长(微秒)
|
||||
"transition": "", // [可选] 转场效果类型
|
||||
"transition_duration": 500000 // [可选] 转场效果时长(微秒,范围100000-2500000)
|
||||
"transition_duration": "" // [可选] 转场时长(微秒),未指定则用转场类型默认时长
|
||||
}
|
||||
]
|
||||
|
||||
@@ -584,7 +586,7 @@ def parse_image_data(json_str: str) -> List[Dict[str, Any]]:
|
||||
"out_animation_duration": item.get("out_animation_duration", None), # 默认无出场动画时长
|
||||
"loop_animation_duration": item.get("loop_animation_duration", None), # 默认无循环动画时长
|
||||
"transition": item.get("transition", None), # 默认无转场
|
||||
"transition_duration": item.get("transition_duration", 500000) # 默认转场时长500000微秒
|
||||
"transition_duration": item.get("transition_duration", None), # 默认用转场类型自身时长
|
||||
}
|
||||
|
||||
# 验证数值范围(仅校验显式传入的尺寸)
|
||||
@@ -614,11 +616,6 @@ def parse_image_data(json_str: str) -> List[Dict[str, Any]]:
|
||||
)
|
||||
raise CustomException(CustomError.INVALID_IMAGE_INFO, f"the {i}th item has invalid end time")
|
||||
|
||||
# 验证转场时长范围
|
||||
if processed_item["transition_duration"] < 100000 or processed_item["transition_duration"] > 2500000:
|
||||
logger.warning(f"Transition duration {processed_item['transition_duration']} out of range [100000, 2500000], using default 500000")
|
||||
processed_item["transition_duration"] = 500000
|
||||
|
||||
result.append(processed_item)
|
||||
logger.debug(f"Processed image item {i+1}: {processed_item}")
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ def add_videos(
|
||||
"duration": 12000000.0, // [可选] 视频总时长 (微秒),如果不传则默认为 end-start
|
||||
"mask": "", // 遮罩类型 [可选],默认值为 None
|
||||
"transition": "", // 转场效果名称 [可选],默认值为 None
|
||||
"transition_duration": 500000.0, // 转场持续时间 (微秒)[可选],默认值为 500000
|
||||
"transition_duration": "", // [可选] 转场时长(微秒),未指定则用转场类型默认时长
|
||||
"volume": 1.0, // 音量大小 [0, 10][可选],默认值为 1.0,10 为最大音量
|
||||
}
|
||||
] // [必选]
|
||||
@@ -463,7 +463,11 @@ def add_video_to_draft(
|
||||
if transition_name:
|
||||
transition_type = find_transition_type_by_name(transition_name)
|
||||
if transition_type:
|
||||
transition_duration = video.get('transition_duration', 500000) # 默认500ms
|
||||
transition_duration = video.get('transition_duration')
|
||||
if transition_duration is not None and transition_duration != "":
|
||||
transition_duration = int(transition_duration)
|
||||
else:
|
||||
transition_duration = None
|
||||
try:
|
||||
video_segment.add_transition(transition_type, duration=transition_duration)
|
||||
logger.info(f"Added transition '{transition_name}' with duration {transition_duration}us")
|
||||
@@ -526,7 +530,7 @@ def parse_video_data(json_str: str) -> List[Dict[str, Any]]:
|
||||
"duration": 12000000.0, // [可选] 视频总时长(微秒),如果不传则默认为end-start
|
||||
"mask": "", // 遮罩类型[可选],默认值为None
|
||||
"transition": "", // 转场效果名称[可选],默认值为None
|
||||
"transition_duration": 500000.0, // 转场持续时间(微秒)[可选],默认值为500000
|
||||
"transition_duration": "", // [可选] 转场时长(微秒),未指定则用转场类型默认时长
|
||||
"volume": 1.0, // 音量大小[0, 10][可选],默认值为1.0,10为最大音量
|
||||
}
|
||||
]
|
||||
@@ -591,8 +595,8 @@ def parse_video_data(json_str: str) -> List[Dict[str, Any]]:
|
||||
"duration": duration,
|
||||
"mask": item.get("mask", None), # 默认值 None
|
||||
"transition": item.get("transition", None), # 默认值 None
|
||||
"transition_duration": item.get("transition_duration", 500000), # 默认值 500000
|
||||
"volume": item.get("volume", 1.0) # 默认值 1.0
|
||||
"transition_duration": item.get("transition_duration", None), # 默认用转场类型自身时长
|
||||
"volume": 1.0 if item.get("volume") is None else item.get("volume"),
|
||||
}
|
||||
|
||||
# 验证数值范围:用户传入范围 [0, 10],超范围时给默认值
|
||||
@@ -600,10 +604,6 @@ def parse_video_data(json_str: str) -> List[Dict[str, Any]]:
|
||||
logger.warning(f"Volume {processed_item['volume']} out of range [0, 10], using default 1.0")
|
||||
processed_item["volume"] = 1.0
|
||||
|
||||
if processed_item["transition_duration"] < 0:
|
||||
# 转场持续时间必须为非负数,给默认值
|
||||
processed_item["transition_duration"] = 500000
|
||||
|
||||
result.append(processed_item)
|
||||
|
||||
return result
|
||||
|
||||
Reference in New Issue
Block a user