API接口去字幕开发者指南:
快速对接视频处理能力
本文面向开发者详解550W AI视频去字幕API的完整对接流程,涵盖鉴权、上传、任务创建、进度查询到结果下载的5步集成方案,并提供Python、Node.js、cURL三种语言的代码示例,帮助你快速将视频去字幕能力集成到自有系统中。
为什么需要视频去字幕API
人工去字幕的效率瓶颈
在视频内容生产的工作流中,去字幕是一个高频且重复的环节。无论是MCN机构的日常素材处理、在线教育平台的课程视频标准化,还是跨境电商的多语言视频本地化,都涉及大量视频的字幕去除需求。
传统方式依赖人工逐帧处理或使用桌面端工具逐个操作,面临以下瓶颈:
- 单个视频处理耗时5-15分钟,日处理量受限于人力
- 无法与现有业务系统(CMS、视频管理平台)打通
- 难以实现7×24小时无人值守的自动化处理
- 多人协作时缺乏统一的任务管理和进度追踪
API自动化处理的优势
通过视频去字幕API接口,开发者可以将去字幕能力无缝嵌入到自有系统中,实现全流程自动化:
- 批量自动化:程序自动提交任务,无需人工干预
- 系统集成:与CMS、视频管理平台、工作流引擎无缝对接
- 弹性扩展:根据业务量动态调整并发数,高峰期自动扩容
- 成本可控:按量计费,无需维护GPU服务器和AI模型
550W AI开放API功能概览
支持的视频格式与分辨率
550W AI开放API支持主流视频格式的去字幕处理,覆盖绝大多数业务场景:
- 视频格式:MP4、MOV
- 分辨率范围:最高1080P(1920×1080)
- 文件大小:单文件最大支持1GB
- 视频时长:单个视频最长支持10分钟(600秒)
- 其他限制:不支持10bit及以上位深、不支持HDR格式视频
API调用流程与鉴权方式
所有接口统一使用 HTTP POST 方法,Content-Type 为 application/x-www-form-urlencoded(上传文件接口为 multipart/form-data),通过HTTPS加密传输。鉴权方式为在请求 body 中携带 userNo(用户编号)和 apiKey(调用密钥,格式 sk-550w-xxxxxxxx)两个参数。
返回结果与回调机制
API支持两种获取结果的方式:
- 轮询模式:主动调用 taskDetail 接口获取任务状态和结果
- 回调模式:提交任务时传入 callbackUrl,任务完成后系统主动推送结果到该地址
推荐在生产环境中使用回调模式,减少不必要的轮询请求,降低系统负载。
快速上手:5步完成API对接
以下是使用550W AI视频去字幕API的完整对接流程,从注册到获取处理结果,最快30分钟即可跑通全流程。
Step 1 - 微信扫码登录获取API Key
访问 550W AI开放平台,微信扫码登录后获取调用凭证:
- 登录后在页面点击「获取 API-KEY」按钮
- 系统返回
userNo(用户编号)和apiKey(密钥,格式sk-550w-xxxxxxxx) - 妥善保存,后续所有接口调用都需要携带这两个参数
Step 2 - 准备视频直链
submitTask 接口接受视频直链 videoUrl(需以 http:// 或 https:// 开头)。获取直链有两种方式:
- 自有存储:将视频上传到自己的对象存储,直接使用其直链
- 平台上传接口:调用
/open/uploadVideo(multipart/form-data)上传文件,返回 videoUrl、coverUrl 以及视频的 width、height、duration
Step 3 - 提交去字幕任务
调用 /open/submitTask 接口,传入视频信息和字幕区域坐标,发起去字幕任务:
- 必填:
videoUrl、width、height、duration(时长,秒) - 必填:字幕区域坐标
x1、y1(左上角)、x2、y2(右下角);全屏去字幕时坐标全部传 0 - 可选:
mode(normal 普通模式 / protect 画面保护模式)、callbackUrl(回调地址) - 接口返回
taskId,用于查询任务进度
Step 4 - 查询任务状态
通过 /open/taskDetail 传入 taskId 查询任务的实时状态:
- 任务状态:waiting(等待)→ processing(处理中)→ success(成功)/ failed(失败)
- 状态为 success 时返回
resultUrl(结果视频地址) - 状态为 failed 时返回
failReason(失败原因),并自动退还已扣积分 - 如果提交时配置了 callbackUrl,任务完成时会自动推送通知
Step 5 - 下载处理结果
任务状态变为 success 后,直接通过返回的 resultUrl 下载去字幕后的视频文件:
- resultUrl 为可直接访问的视频地址
- 结果链接具有有效期(taskList 接口的
expiredTime字段给出过期时间) - 请在过期前及时下载或转存到自有存储
代码示例:Python/Node.js/cURL
以下提供三种常用语言的开发者接口调用示例,帮助你快速上手。所有接口的 Base URL 为 https://www.550wai.cn。
Python请求示例
import requests
import time
BASE_URL = "https://www.550wai.cn"
USER_NO = "your_user_no"
API_KEY = "sk-550w-your_api_key"
# Step 1: 提交去字幕任务(视频直链 + 字幕区域坐标)
def submit_task(video_url, width, height, duration, box, callback_url=None):
x1, y1, x2, y2 = box
payload = {
"userNo": USER_NO,
"apiKey": API_KEY,
"videoUrl": video_url,
"width": width, "height": height, "duration": duration,
"x1": x1, "y1": y1, "x2": x2, "y2": y2,
"mode": "normal", # normal=普通模式, protect=画面保护模式
}
if callback_url:
payload["callbackUrl"] = callback_url
resp = requests.post(f"{BASE_URL}/open/submitTask", data=payload)
data = resp.json()
if data.get("code") != 200:
raise Exception(f"{data.get('code')} {data.get('message')}")
return data["taskId"]
# Step 2: 轮询任务状态
def wait_for_completion(task_id):
while True:
resp = requests.post(
f"{BASE_URL}/open/taskDetail",
data={"userNo": USER_NO, "apiKey": API_KEY, "taskId": task_id},
)
info = resp.json()
if info.get("status") == "success":
return info["resultUrl"]
elif info.get("status") == "failed":
raise Exception(info.get("failReason"))
time.sleep(5) # 每5秒查询一次
# Step 3: 下载结果
def download_result(result_url, output_path):
resp = requests.get(result_url, stream=True)
with open(output_path, "wb") as f:
for chunk in resp.iter_content(chunk_size=8192):
f.write(chunk)
# 完整调用流程(全屏去字幕示例:坐标传 0)
task_id = submit_task(
"https://example.com/input_video.mp4",
width=1280, height=720, duration=30,
box=(0, 600, 1280, 720),
)
result_url = wait_for_completion(task_id)
download_result(result_url, "output_video.mp4")
print("去字幕完成!")
Node.js请求示例
const axios = require('axios');
const fs = require('fs');
const BASE_URL = 'https://www.550wai.cn';
const USER_NO = 'your_user_no';
const API_KEY = 'sk-550w-your_api_key';
// 提交去字幕任务
async function submitTask(videoUrl, width, height, duration, box) {
const [x1, y1, x2, y2] = box;
const params = new URLSearchParams({
userNo: USER_NO, apiKey: API_KEY,
videoUrl, width, height, duration,
x1, y1, x2, y2, mode: 'normal',
});
const resp = await axios.post(`${BASE_URL}/open/submitTask`, params.toString(), {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
});
if (resp.data.code !== 200) throw new Error(resp.data.message);
return resp.data.taskId;
}
// 轮询任务状态
async function waitForCompletion(taskId) {
while (true) {
const params = new URLSearchParams({ userNo: USER_NO, apiKey: API_KEY, taskId });
const resp = await axios.post(`${BASE_URL}/open/taskDetail`, params.toString(), {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
});
const { status, resultUrl, failReason } = resp.data;
if (status === 'success') return resultUrl;
if (status === 'failed') throw new Error(failReason);
await new Promise(r => setTimeout(r, 5000));
}
}
// 完整调用
(async () => {
const taskId = await submitTask(
'https://example.com/input_video.mp4', 1280, 720, 30, [0, 600, 1280, 720]
);
const resultUrl = await waitForCompletion(taskId);
console.log('结果地址:', resultUrl);
})();
cURL命令行示例
# 提交去字幕任务
curl -X POST https://www.550wai.cn/open/submitTask \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "userNo=your_user_no" \
--data-urlencode "apiKey=sk-550w-your_api_key" \
--data-urlencode "videoUrl=https://example.com/video.mp4" \
--data-urlencode "width=1280" \
--data-urlencode "height=720" \
--data-urlencode "duration=30" \
--data-urlencode "x1=0" --data-urlencode "y1=600" \
--data-urlencode "x2=1280" --data-urlencode "y2=720" \
--data-urlencode "mode=normal"
# 返回: {"code": 200, "message": "success", "taskId": "t_xyz789", "status": "waiting"}
# 查询任务状态
curl -X POST https://www.550wai.cn/open/taskDetail \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "userNo=your_user_no" \
--data-urlencode "apiKey=sk-550w-your_api_key" \
--data-urlencode "taskId=t_xyz789"
# 返回: {"code": 200, "status": "success", "resultUrl": "https://...", ...}
批量处理与高级用法
并发任务管理
在实际生产环境中,通常需要同时处理多个视频。550W AI视频去字幕API对并发任务数无上限,可以同时提交多个任务并行处理,不排队。即便如此,仍建议在客户端用任务队列控制本地并发,避免瞬时请求过多。以下是Python中使用asyncio管理并发的示例:
import asyncio
import aiohttp
CONCURRENCY_LIMIT = 10 # 客户端本地并发上限
semaphore = asyncio.Semaphore(CONCURRENCY_LIMIT)
async def process_video(session, video_url, width, height, duration, box):
async with semaphore:
task_id = await submit_task_async(session, video_url, width, height, duration, box)
result = await wait_for_completion_async(session, task_id)
return result
async def batch_process(video_list):
async with aiohttp.ClientSession() as session:
tasks = [process_video(session, *v) for v in video_list]
results = await asyncio.gather(*tasks)
return results
回调通知配置
相比轮询模式,回调通知更适合生产环境。在提交任务时传入 callbackUrl 参数,任务首次变为 success 或 failed 时,系统会向该地址发送一次 application/json 的 POST 请求(仅推送一次、不重试,请确保地址可用并返回 HTTP 2xx):
// 回调请求体示例
{
"event": "task.completed",
"taskId": "t_xyz789",
"status": "success",
"cost": 39,
"resultUrl": "https://example.com/result.mp4",
"timestamp": 1717200000000
}
status=failed 时回调体会包含 failReason 字段,且本次扣除的积分已自动退还。
错误处理与重试策略
在调用视频处理API时,接口通过响应体中的 code 字段返回业务状态,常见错误码及建议处理方式如下:
| code | 含义 | 建议处理方式 |
|---|---|---|
| 200 | 成功 | 正常业务响应 |
| -100 | 鉴权失败 | 检查 userNo / apiKey 是否正确、是否已重新生成失效 |
| -200 | 参数不合法 | 检查必填字段、格式、坐标范围、分辨率与时长是否超限 |
| -300 | 业务拒绝 | 积分不足时充值;任务不存在时核对 taskId |
| -400 | 账号封禁 | 账号因违规内容被封禁,无法提交任务 |
| -500 | 服务内部异常 | 稍后重试,建议指数退避,最多3次 |
推荐的重试策略:仅对 -500 等服务端异常采用指数退避算法(Exponential Backoff),初始等待时间1秒,每次重试翻倍,最大等待时间不超过60秒,最多重试3次。参数类错误(-200)应先修正参数而非重试。
应用场景与最佳实践
MCN机构批量视频处理
MCN机构每天需要处理数百条视频素材。通过视频去字幕API对接内部的视频管理系统,可以实现:
- 素材入库时自动触发去字幕任务
- 处理完成后自动归档到素材库对应目录
- 结合团队批量去字幕工作流,实现多人协作的自动化管线
在线教育平台集成
教育平台在课程视频上架前,通常需要去除录制时的临时字幕,替换为标准化的字幕轨道。通过API集成,可以在视频上传流程中自动完成去字幕处理,无需人工介入。
跨境电商视频自动化
跨境电商需要将国内的产品视频去除中文字幕后,添加目标市场语言的字幕进行分发。通过API可以构建自动化的海外视频分发工作流:上传 → 去字幕 → 添加多语言字幕 → 分发到TikTok、YouTube等平台。
常见问题FAQ
API调用有频率限制吗?
并发任务数无上限,可同时提交多个任务并行处理、不排队。实际处理量取决于账户的极速积分余额,按视频时长和分辨率扣费,积分用完即止。建议在客户端用任务队列控制本地并发,避免瞬时请求过多。
视频去字幕API支持哪些字幕类型?
支持硬字幕(烧录在画面中的字幕)的去除,包括底部字幕、顶部字幕、花字、滚动字幕等。软字幕(独立字幕轨道)无需使用本API,直接移除字幕轨道即可。
处理一个视频大约需要多长时间?
极速去字幕速度较快,1分钟的1080P视频处理时间约为30秒。视频越长、分辨率越高,处理时间相应增加。当前支持的最高分辨率为1080P,单个视频最长10分钟。
API如何指定字幕区域?
提交任务(submitTask)时通过 x1、y1(左上角)和 x2、y2(右下角)四个坐标指定字幕区域(单位为像素)。若希望全屏去字幕,将四个坐标全部传 0 即可。此外可通过 mode 参数选择 normal(普通模式)或 protect(画面保护模式,仅去除选框外的文字,选框内保留不处理)。
如何保证数据安全?
所有API通信使用HTTPS加密传输。处理结果链接具有有效期(taskList 接口的 expiredTime 字段给出过期时间),请在过期前及时下载或转存到自有存储。
注册即可获取API Key,5分钟跑通全流程,按量计费无门槛