视频上传 API
视频上传 API
视频文件采用 COS 前端直传方案(服务端不接触文件流),上传链路分三步:
1. 获取 COS 直传临时密钥 GET /project/video/uploadCredentials.html
2. 前端使用 cos-js-sdk-v5 直传文件至 COS(客户端直连 COS,不经过翻译服务)
3. 直传完成回调入库 GET /project/video/uploadComplete.html
(服务端 HEAD 复核大小、CI 读时长、校验有效视频、搬运到正式存储位置并入库)
回调入库完成后,调用 新增视频 接口将文件批量入库为项目视频,之后即可通过视频列表接口查询视频及其翻译各阶段状态。
获取 COS 直传临时密钥
GET /project/video/uploadCredentials.html
上传第一步:获取 COS 临时密钥,前端拿到后使用 cos-js-sdk-v5 直传,服务端不接触文件流。
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| projectId | query | string | 是 | 项目 id |
返回示例
200 Response
{
"id": "string",
"code": 0,
"msg": "string",
"data": {}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | BaseReturnModel |
直传完成回调入库
GET /project/video/uploadComplete.html
上传第三步:前端直传 COS 完成后回调。服务端 HEAD 复核大小、CI 读时长、校验有效视频(防伪装)、搬运到正式存储位置并入库。
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| fileId | query | string | 是 | 文件 id |
| projectId | query | string | 是 | 项目 id |
| sha256 | query | string | 是 | 文件 SHA256 |
| fileName | query | string | 是 | 文件名 |
返回示例
200 Response
{
"id": "string",
"code": 0,
"msg": "string",
"data": {}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | BaseReturnModel |
新增视频
GET /project/video/add.html
将已上传的文件批量入库为项目视频;fileSha256s/fileNames/previewFileIds 传入时数量须与 fileIds 一致。
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| projectId | query | string | 是 | 项目 id |
| fileIds | query | arraystring | 是 | 文件 id 列表 |
| previewFileIds | query | arraystring | 否 | 预览文件 id 列表(数量须与 fileIds 一致) |
| fileSha256s | query | arraystring | 否 | 文件 SHA256 列表(数量须与 fileIds 一致) |
| fileNames | query | arraystring | 否 | 文件名列表(数量须与 fileIds 一致) |
返回示例
200 Response
{
"id": "string",
"code": 0,
"msg": "string",
"data": {}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | BaseReturnModel |
视频列表
GET /project/video/data.html
分页查询项目下视频(含擦除/校准/翻译/压制四阶段状态、付费状态、剩余免费重试次数等)。
本接口同时也是翻译流程的状态轮询接口:发起翻译后轮询本接口获取四阶段进度,详见 视频翻译任务 API。
分页与过滤通用参数(page/limit/dataEqual/dataLike/dataRange/sort/order)见 概述-分页与过滤参数。
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| page | query | integer | 否 | 页码,从 1 开始 |
| limit | query | integer | 否 | 每页数量 |
| sort | query | string | 否 | 排序字段 |
| order | query | string | 否 | 排序方向 |
| dataEqual | query | string | 否 | 精确过滤条件 JSON 串,如 {"projectId":"xxx"} |
| dataLike | query | string | 否 | 模糊过滤条件 JSON 串 |
| dataRange | query | string | 否 | 范围过滤条件 JSON 串 |
返回示例
200 Response
{
"id": "string",
"code": 0,
"msg": "string",
"data": {}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | BaseReturnModel |
编辑视频
GET /project/video/edit.html
编辑视频的可设置项(目标语言、成片质量、优先级等)。内部状态字段(各阶段状态/结果/耗时、付费信息等)由服务端维护,不接受传入。
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| id | query | string | 是 | 视频 id |
| projectId | query | string | 否 | 项目 id |
| targetLanguage | query | string | 否 | 目标语言 |
| duration | query | string | 否 | 短剧时长(秒) |
| priority | query | integer | 否 | 优先级:数字越大,优先级越高 |
| quality | query | integer | 否 | 成片质量:0=降质(非会员),1=高清(会员);空走降质 |
| subtitleRegions | query | string | 否 | 字幕区域(JSON 格式,存储相对坐标) |
详细说明
quality:成片质量,0=降质(非会员)、1=高清(会员),空走降质。决定三阶段是否把 OCR 数据还原到原始尺度:会员还原(原始帧号+原始分辨率 box),非会员保持 OCR 基准(fpsOcr 帧号+maxSide box)。须在擦除(erase)之前确定且之后不可变,否则已生成的 paddle.json/SRT 尺度会与 embed 抽帧错位。
srtFps / srtWidth / srtHeight(查询返回字段):SRT 帧空间基准,前端用 帧号/srtFps 反算时间戳、用 box * displayWidth / srtWidth 换算到播放器尺寸。存量数据为 null,前端不显示时间。
返回示例
200 Response
{
"id": "string",
"code": 0,
"msg": "string",
"data": {}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | BaseReturnModel |
删除视频
GET /project/video/del.html
批量删除视频记录。
请求参数
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| ids | query | arraystring | 是 | 视频 id 列表 |
返回示例
200 Response
{
"id": "string",
"code": 0,
"msg": "string",
"data": {}
}
返回结果
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|---|---|---|---|
| 200 | OK | none | BaseReturnModel |