添加文字阴影开关。

This commit is contained in:
Hommy
2025-12-16 10:55:38 +08:00
parent 1cc27ccf47
commit 2cd6f72e4d
4 changed files with 60 additions and 11 deletions
+30
View File
@@ -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
}'
```
## 错误码说明
| 错误码 | 错误信息 | 说明 | 解决方案 |
+1
View File
@@ -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
)
+1
View File
@@ -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
View File
@@ -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(