ADD_CAPTIONS API 接口文档

📄 API_ADD_CAPTIONS.md 🕒 8/10/2025, 6:49:34 PM 📏 8KB

ADD_CAPTIONS API 接口文档

接口信息

POST /api/drafts/add_captions

功能描述

向现有草稿中添加字幕轨道和字幕片段。支持丰富的字幕样式设置,包括关键词高亮、字体样式、边框效果、对齐方式、透明度和动画效果等。

请求参数

{
  "captions": "[{\"start\":0,\"end\":10000000,\"text\":\"你好,剪映\",\"keyword\":\"好\",\"keyword_color\":\"#457616\",\"keyword_font_size\":15,\"font_size\":15}]",
  "draft_url": "https://ts.fyshark.com/#/cozeToJianyin?drafId=...",
  "text_color": "#ff1837",
  "border_color": "#fe8a80",
  "alignment": 2,
  "alpha": 0.5
}

参数说明

参数名 类型 必填 默认值 说明
captions string - JSON字符串格式的字幕信息数组
draft_url string - 目标草稿的完整URL
text_color string "#ffffff" 文本颜色(十六进制)
border_color string - 边框颜色(十六进制)
alignment number 1 文本对齐方式(0-5)
alpha number 1.0 文本透明度(0.0-1.0)
font string - 字体名称
font_size number 15 字体大小
letter_spacing number - 字间距
line_spacing number - 行间距
scale_x number 1.0 水平缩放
scale_y number 1.0 垂直缩放
transform_x number 0 水平位移
transform_y number 0 垂直位移
style_text boolean false 是否使用样式文本

captions 数组元素说明

参数名 类型 必填 默认值 说明
start number - 字幕开始时间(微秒)
end number - 字幕结束时间(微秒)
text string - 字幕文本内容
keyword string - 关键词(用|分隔多个关键词)
keyword_color string "#ff7100" 关键词颜色
keyword_font_size number 15 关键词字体大小
font_size number 15 文本字体大小
in_animation string - 入场动画
out_animation string - 出场动画
loop_animation string - 循环动画
in_animation_duration number - 入场动画时长
out_animation_duration number - 出场动画时长
loop_animation_duration number - 循环动画时长

对齐方式说明

说明
0 左对齐
1 居中对齐
2 右对齐
3 垂直居中
4 垂直左对齐
5 垂直右对齐

响应格式

成功响应 (200)

{
  "status": "success",
  "message": "字幕添加成功",
  "data": {
    "draft_url": "https://ts.fyshark.com/#/cozeToJianyin?drafId=...",
    "track_id": "text_track_123",
    "text_ids": ["text_001", "text_002"],
    "segment_ids": ["seg_001", "seg_002"],
    "segment_infos": [
      {
        "id": "seg_001",
        "start": 0,
        "end": 10000000
      }
    ]
  }
}

错误响应 (4xx/5xx)

{
  "status": "error",
  "message": "错误信息",
  "error": "详细错误描述"
}

使用示例

cURL 示例

curl -X POST https://jy-api.fyshark.com/api/drafts/add_captions \
  -H "Content-Type: application/json" \
  -d '{
    "captions": "[{\"start\":0,\"end\":10000000,\"text\":\"你好,剪映\",\"keyword\":\"好\",\"keyword_color\":\"#457616\",\"keyword_font_size\":15,\"font_size\":15}]",
    "draft_url": "https://ts.fyshark.com/#/cozeToJianyin?drafId=https://video-snot-12220.oss-cn-shanghai.aliyuncs.com/draft/xxx.json",
    "text_color": "#ff1837",
    "border_color": "#fe8a80",
    "alignment": 2,
    "alpha": 0.5
  }'

JavaScript 示例

const addCaptions = async (captionsData, draftUrl, options = {}) => {
  const response = await fetch('/api/drafts/add_captions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      captions: JSON.stringify(captionsData),
      draft_url: draftUrl,
      text_color: options.textColor || "#ffffff",
      border_color: options.borderColor,
      alignment: options.alignment || 1,
      alpha: options.alpha || 1.0,
      font: options.font,
      font_size: options.fontSize || 15
    })
  });

  const result = await response.json();
  return result;
};

// 使用示例
const captions = [
  {
    start: 0,
    end: 10000000,
    text: "你好,剪映",
    keyword: "好",
    keyword_color: "#457616",
    keyword_font_size: 15,
    font_size: 15
  },
  {
    start: 10000000,
    end: 20000000,
    text: "欢迎使用字幕功能",
    keyword: "字幕",
    keyword_color: "#ff0000",
    in_animation: "fade_in",
    out_animation: "fade_out"
  }
];

const options = {
  textColor: "#ff1837",
  borderColor: "#fe8a80", 
  alignment: 2,
  alpha: 0.8
};

try {
  const result = await addCaptions(captions, draftUrl, options);
  console.log('字幕添加成功:', result.data);
} catch (error) {
  console.error('添加失败:', error);
}

Python 示例 (可选)

import requests
import json

def add_captions(captions_data, draft_url, **options):
    response = requests.post('https://jy-api.fyshark.com/api/drafts/add_captions', 
        headers={'Content-Type': 'application/json'},
        json={
            'captions': json.dumps(captions_data),
            'draft_url': draft_url,
            'text_color': options.get('text_color', '#ffffff'),
            'border_color': options.get('border_color'),
            'alignment': options.get('alignment', 1),
            'alpha': options.get('alpha', 1.0),
            'font': options.get('font'),
            'font_size': options.get('font_size', 15)
        }
    )
    return response.json()

# 使用示例
captions = [
    {
        "start": 0,
        "end": 10000000,
        "text": "你好,剪映",
        "keyword": "好",
        "keyword_color": "#457616",
        "keyword_font_size": 15,
        "font_size": 15
    }
]

result = add_captions(captions, draft_url, 
    text_color="#ff1837",
    border_color="#fe8a80",
    alignment=2,
    alpha=0.5
)
print(result)

错误码说明

错误码 错误信息 说明 解决方案
400 draft_url是必填项 缺少草稿URL参数 提供有效的草稿URL
400 captions是必填项 缺少字幕信息参数 提供字幕信息数组
400 captions格式错误 JSON解析失败 检查JSON格式是否正确
400 字幕信息验证失败 字幕数据不符合要求 检查时间范围和文本内容
404 草稿不存在 指定的草稿URL无效 检查草稿URL是否正确
500 字幕处理失败 内部处理错误 联系技术支持

注意事项

  1. captions参数格式: 必须是JSON字符串格式,不是直接的数组对象
  2. 时间单位: 所有时间参数(start, end)都使用微秒为单位
  3. 颜色格式: 所有颜色参数使用十六进制格式(如 #ffffff)
  4. 关键词分隔: 多个关键词使用竖线|分隔
  5. 对齐方式: alignment参数范围为0-5,超出范围将使用默认值1
  6. 透明度范围: alpha参数范围为0.0-1.0,0为完全透明,1为完全不透明
  7. 字体支持: font参数需要草稿中存在对应的字体资源

工作流程

  1. 验证必填参数(draft_url, captions)
  2. 解析captions JSON字符串
  3. 验证字幕信息格式
  4. 获取并解密草稿内容
  5. 创建新的文本轨道
  6. 遍历字幕信息数组,逐个处理:
    • 创建字幕素材
    • 设置文本样式(颜色、字体、大小等)
    • 处理关键词高亮
    • 设置边框效果
    • 应用动画效果
    • 添加字幕片段到轨道
  7. 加密并保存更新后的草稿
  8. 返回轨道ID和字幕ID列表

高级功能

关键词高亮

支持在字幕文本中高亮显示特定关键词:

{
  "text": "你好,剪映",
  "keyword": "好|剪映",
  "keyword_color": "#ff0000",
  "keyword_font_size": 18
}

动画效果

支持入场、出场和循环动画:

{
  "in_animation": "fade_in",
  "out_animation": "fade_out", 
  "loop_animation": "bounce",
  "in_animation_duration": 1000000,
  "out_animation_duration": 1000000,
  "loop_animation_duration": 2000000
}

文本变换

支持缩放和位置调整:

{
  "scale_x": 1.2,
  "scale_y": 1.0,
  "transform_x": 100,
  "transform_y": 50
}

错误排查

常见问题

  1. 问题: JSON解析失败
    解决: 确保captions是正确的JSON字符串格式,特别注意转义字符

  2. 问题: 字幕显示位置不正确
    解决: 检查alignment参数值,确保在0-5范围内

  3. 问题: 关键词高亮不生效
    解决: 确保keyword存在于text中,检查keyword_color格式

调试建议

更新日志


📖 文档版本: v1.0.0
🔄 最后更新: 2025-08-01
👤 维护者: Developer