字幕提取

POST/openapi/v1/extract/subtitles — 每次调用消耗 1 积分。

返回视频元信息与已有字幕轨道,包含人工与自动生成字幕。YouTube 提供 srt、vtt、ttml、json3、srv1、srv2、srv3;B 站提供原生 BCC json。如需 SRT/VTT 等格式,可自行转换。

支持 BV/av 视频、指定分 P(?p=2)、番剧单集(ep836876)及 b23.tv 短链。不提取弹幕,也不为无字幕视频生成字幕。本接口暂不支持 bilibili.tv 国际版。

curl -X POST https://api.snapany.com/openapi/v1/extract/subtitles \
  -H "Authorization: Bearer sk_snapany_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.youtube.com/watch?v=jNQXAC9IVRw"}'

响应包含:

  • id / title / text / duration / created_at / thumbnail_url:视频元信息。created_at 为视频发布时间;准确时间使用 UTC ISO 8601(例如 2005-04-24T03:31:52.000Z),仅有相对时间时保留原文,无法获取时不返回。
  • subtitles:每个轨道一条(同语言不一定只有一条)——language_name(展示名,自动生成轨会标注,如 English (auto-generated))、language_tag(BCP 47 风格)、urls(各格式的下载直链)

按需下载对应格式——播放器与剪辑用 srt/vtt,程序化处理(带逐句时间轴)用 json3。

B 站 BCC JSON

每条字幕轨提供一个 format: "json" 的下载链接。BCC 的 body 是字幕条目数组,每条包含以秒为单位的 from、to 和文本 content。

同一个 language_tag 可能有多条字幕,轨道身份应包含原始序号,不能按语言标签覆盖。自动字幕的 language_name 带 (auto-generated),无法据此区分自动翻译和语音识别。

没有字幕的视频报 no_subtitles 错误(HTTP 404)且不扣费——捕获该错误码后回退到转录。

完整 schema 与真实形状的响应示例:API 参考。

字幕提取 vs. 转录

  • 本接口返回 YouTube 或 B 站已有的字幕——每次 1 积分,但仅限有字幕的视频。
  • 转录用 Whisper large-v3 对音频转写——任何视频都可用(包括没有字幕的),支持说话人分离,每分钟 4 积分。

常见流水线:先调 /extract/subtitles;遇到 no_subtitles 错误再回退到/transcriptions。

计费

每次成功调用消耗 1 积分,提取成功后扣除;失败的调用(无效链接、不支持的站点、无字幕)不扣费。详见积分与计费。