API 接口文档

视频生成服务 API

API 接口文档

本文档描述视频生成服务的 API 接口。

基础信息

  • 基础 URL: http://localhost:8787(开发环境)
  • 内容类型: application/json
  • 响应格式: JSON

POST /api/json

提交视频 Schema 并生成视频预览。

请求

Headers:

Content-Type: application/json

Body: 完整的 VideoSchema JSON 对象。

{
  "meta": {
    "version": "2.0.0",
    "title": "我的视频"
  },
  "video": {
    "width": 1920,
    "height": 1080,
    "fps": 30,
    "duration": 30,
    "background": "#000000"
  },
  "tracks": [...]
}

响应

成功 (200):

{
  "success": true,
  "taskId": "abc123",
  "url": "/v/abc123"
}

字段说明:

字段类型描述
successboolean是否成功
taskIdstring任务 ID
urlstring预览页面路径

失败 (400):

{
  "success": false,
  "error": "Invalid JSON schema"
}

示例

curl -X POST http://localhost:8787/api/json \
  -H "Content-Type: application/json" \
  -d '{
    "meta": { "version": "2.0.0" },
    "video": { "width": 1920, "height": 1080, "fps": 30, "duration": 10 },
    "tracks": [
      {
        "type": "visual",
        "clips": [
          {
            "type": "text",
            "text": "Hello World",
            "start": 0,
            "duration": 5
          }
        ]
      }
    ]
  }'

GET /v/:id

获取视频预览页面。

请求

路径参数:

  • id: 任务 ID(从 POST /api/json 响应中获取)

响应

返回 HTML 页面,包含 Revideo 播放器。

HTML 内容:

<!DOCTYPE html>
<html>
<head>
  <title>Video Preview</title>
</head>
<body>
  <div id="root"></div>
  <script>
    window.__SCHEMA__ = { /* Schema 数据 */ };
  </script>
  <script src="/client.js"></script>
</body>
</html>

示例

curl http://localhost:8787/v/abc123

或在浏览器中打开: http://localhost:8787/v/abc123


Schema 验证

必填字段

字段类型描述
meta.versionstringSchema 版本
video.widthnumber视频宽度
video.heightnumber视频高度
video.fpsnumber帧率
video.durationnumber总时长
tracksarray轨道列表

验证规则

  1. meta.version - 必须是有效的版本字符串
  2. video.width/height - 正整数
  3. video.fps - 正整数,通常为 24、30、60
  4. video.duration - 正数,单位秒
  5. tracks - 至少包含一个轨道
  6. clips - 每个轨道至少包含一个 clip

常见错误

错误原因解决方案
Invalid JSONJSON 格式错误检查 JSON 语法
Missing required field缺少必填字段添加缺失字段
Invalid clip type未知的 clip 类型使用支持的类型
Invalid time range时间范围无效检查 start/duration

错误响应

400 Bad Request

请求格式错误或验证失败。

{
  "success": false,
  "error": "Missing required field: video.duration"
}

404 Not Found

资源不存在。

{
  "success": false,
  "error": "Task not found"
}

500 Internal Server Error

服务器内部错误。

{
  "success": false,
  "error": "Internal server error"
}

开发环境

启动开发服务器

pnpm dev

服务器将在 http://localhost:8787 启动。

环境变量

变量描述默认值
PORT服务端口8787
R2_BUCKETR2 存储桶名称-
R2_ACCESS_KEYR2 访问密钥-
R2_SECRET_KEYR2 密钥-

速率限制

开发环境无速率限制。

生产环境建议配置:

  • 每分钟最多 60 次请求
  • 单个 IP 每小时最多 100 次请求

最佳实践

  1. 资源预加载:使用 assets 字段预加载资源
  2. 错误处理:始终检查响应中的 success 字段
  3. 超时设置:建议设置 30 秒超时
  4. 重试机制:对于 5xx 错误,可以重试 2-3 次
  5. 缓存利用:相同的 Schema 会返回相同的 taskId