mirror of
https://github.com/Hommy-master/capcut-mate.git
synced 2026-08-30 17:48:47 +08:00
添加文字阴影开关。
This commit is contained in:
@@ -55,6 +55,7 @@ POST /openapi/capcut-mate/v1/add_captions
|
||||
| transform_x | number | ❌ | 0.0 | X轴位置偏移(像素) |
|
||||
| transform_y | number | ❌ | 0.0 | Y轴位置偏移(像素) |
|
||||
| style_text | boolean | ❌ | false | 是否使用样式文本 |
|
||||
| has_shadow | boolean | ❌ | false | 是否启用文本阴影 |
|
||||
| shadow_info | object | ❌ | null | 文本阴影参数 |
|
||||
|
||||
### captions字段详细说明
|
||||
@@ -141,6 +142,18 @@ captions是一个JSON字符串,包含字幕数组,每个字幕对象包含
|
||||
| shadow_distance | number | ❌ | 5.0 | 阴影距离,取值范围为[0, 100] |
|
||||
| shadow_angle | number | ❌ | -45.0 | 阴影角度,取值范围为[-180, 180] |
|
||||
|
||||
当 `has_shadow` 设置为 `true` 但未提供 `shadow_info` 时,系统将使用以下默认阴影配置:
|
||||
|
||||
```json
|
||||
{
|
||||
"shadow_color": "#000000",
|
||||
"shadow_alpha": 0.9,
|
||||
"shadow_diffuse": 15,
|
||||
"shadow_distance": 5,
|
||||
"shadow_angle": -45
|
||||
}
|
||||
```
|
||||
|
||||
## 响应格式
|
||||
|
||||
### 成功响应 (200)
|
||||
@@ -249,6 +262,7 @@ curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/add_captions \
|
||||
"alignment": 1,
|
||||
"alpha": 1.0,
|
||||
"font_size": 20,
|
||||
"has_shadow": true,
|
||||
"shadow_info": {
|
||||
"shadow_alpha": 0.8,
|
||||
"shadow_color": "#000000",
|
||||
@@ -259,6 +273,22 @@ curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/add_captions \
|
||||
}'
|
||||
```
|
||||
|
||||
#### 5. 使用默认文本阴影的字幕
|
||||
|
||||
```bash
|
||||
curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/add_captions \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"draft_url": "YOUR_DRAFT_URL",
|
||||
"captions": "[{\"start\":0,\"end\":5000000,\"text\":\"你好,剪映\"}]",
|
||||
"text_color": "#ffffff",
|
||||
"alignment": 1,
|
||||
"alpha": 1.0,
|
||||
"font_size": 20,
|
||||
"has_shadow": true
|
||||
}'
|
||||
```
|
||||
|
||||
## 错误码说明
|
||||
|
||||
| 错误码 | 错误信息 | 说明 | 解决方案 |
|
||||
|
||||
@@ -209,6 +209,7 @@ def add_captions(acr: AddCaptionsRequest) -> AddCaptionsResponse:
|
||||
underline=acr.underline,
|
||||
italic=acr.italic,
|
||||
bold=acr.bold,
|
||||
has_shadow=acr.has_shadow,
|
||||
shadow_info=acr.shadow_info
|
||||
)
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ class AddCaptionsRequest(BaseModel):
|
||||
underline: bool = Field(default=False, description="文字下划线开关")
|
||||
italic: bool = Field(default=False, description="文本斜体开关")
|
||||
bold: bool = Field(default=False, description="文本加粗开关")
|
||||
has_shadow: bool = Field(default=False, description="是否启用文本阴影")
|
||||
shadow_info: Optional[ShadowInfo] = Field(default=None, description="文本阴影参数")
|
||||
|
||||
|
||||
|
||||
+28
-11
@@ -28,6 +28,7 @@ def add_captions(
|
||||
underline: bool = False,
|
||||
italic: bool = False,
|
||||
bold: bool = False,
|
||||
has_shadow: bool = False,
|
||||
shadow_info: Optional[ShadowInfo] = None
|
||||
) -> Tuple[str, str, List[str], List[str], List[dict]]:
|
||||
"""
|
||||
@@ -85,7 +86,7 @@ def add_captions(
|
||||
logger.debug(f"Function parameters - text_color: {text_color}, border_color: {border_color}, "
|
||||
f"alignment: {alignment}, alpha: {alpha}, font: {font}, font_size: {font_size}, "
|
||||
f"scale_x: {scale_x}, scale_y: {scale_y}, transform_x: {transform_x}, transform_y: {transform_y}, "
|
||||
f"style_text: {style_text}, underline: {underline}, italic: {italic}, bold: {bold}, shadow_info: {shadow_info}")
|
||||
f"style_text: {style_text}, underline: {underline}, italic: {italic}, bold: {bold}, has_shadow: {has_shadow}, shadow_info: {shadow_info}")
|
||||
|
||||
try:
|
||||
# 1. 提取草稿ID
|
||||
@@ -137,6 +138,7 @@ def add_captions(
|
||||
underline=underline,
|
||||
italic=italic,
|
||||
bold=bold,
|
||||
has_shadow=has_shadow,
|
||||
shadow_info=shadow_info
|
||||
)
|
||||
segment_ids.append(segment_id)
|
||||
@@ -192,6 +194,7 @@ def add_caption_to_draft(
|
||||
underline: bool = False,
|
||||
italic: bool = False,
|
||||
bold: bool = False,
|
||||
has_shadow: bool = False,
|
||||
shadow_info: Optional[ShadowInfo] = None
|
||||
) -> Tuple[str, str, dict]:
|
||||
"""
|
||||
@@ -214,6 +217,7 @@ def add_caption_to_draft(
|
||||
in_animation_duration: 入场动画时长,可选
|
||||
out_animation_duration: 出场动画时长,可选
|
||||
loop_animation_duration: 循环动画时长,可选
|
||||
has_shadow: 是否启用文本阴影
|
||||
shadow_info: 文本阴影参数
|
||||
其他参数:字幕样式设置
|
||||
|
||||
@@ -288,17 +292,30 @@ def add_caption_to_draft(
|
||||
transform_y=transform_y / script.height # 转换为画布高度单位
|
||||
)
|
||||
|
||||
# 7. 创建文本阴影(如果提供了shadow_info)
|
||||
# 7. 创建文本阴影(如果启用了阴影)
|
||||
text_shadow = None
|
||||
if shadow_info:
|
||||
shadow_rgb_color = hex_to_rgb(shadow_info.shadow_color)
|
||||
text_shadow = TextShadow(
|
||||
alpha=shadow_info.shadow_alpha,
|
||||
color=shadow_rgb_color,
|
||||
diffuse=shadow_info.shadow_diffuse,
|
||||
distance=shadow_info.shadow_distance,
|
||||
angle=shadow_info.shadow_angle
|
||||
)
|
||||
if has_shadow:
|
||||
# 如果启用了阴影但没有提供shadow_info,则使用默认值
|
||||
if shadow_info is None:
|
||||
# 创建默认的阴影配置
|
||||
shadow_rgb_color = hex_to_rgb("#000000")
|
||||
text_shadow = TextShadow(
|
||||
alpha=0.9,
|
||||
color=shadow_rgb_color,
|
||||
diffuse=15.0,
|
||||
distance=5.0,
|
||||
angle=-45.0
|
||||
)
|
||||
else:
|
||||
# 使用提供的shadow_info配置
|
||||
shadow_rgb_color = hex_to_rgb(shadow_info.shadow_color)
|
||||
text_shadow = TextShadow(
|
||||
alpha=shadow_info.shadow_alpha,
|
||||
color=shadow_rgb_color,
|
||||
diffuse=shadow_info.shadow_diffuse,
|
||||
distance=shadow_info.shadow_distance,
|
||||
angle=shadow_info.shadow_angle
|
||||
)
|
||||
|
||||
# 8. 创建文本片段
|
||||
text_segment = TextSegment(
|
||||
|
||||
Reference in New Issue
Block a user