问答
YouTube 报 TranscriptsDisabled 是什么意思,还能拿到字幕吗?
简短回答
TranscriptsDisabled 的意思是库没找到能读的字幕轨。要分清视频真没字幕还是请求被拦,换一个来源再查一次:YouTube 视频字幕接口有字幕就返回全文,$0.004;视频确实没有字幕时返回 not_found,不扣费。
跑一批 200 个视频,有 30 个报 TranscriptsDisabled。其中一部分确实没有字幕;另一部分在浏览器里明明能看到 CC 按钮,youtube-transcript-api 的 issue 里也有人反馈过一模一样的情况。决定怎么处理之前,得先把这两类分开。
两种完全不同的原因
- 视频本来就没有字幕轨。 作者关掉了字幕,或者 YouTube 还没生成自动字幕(新视频常常要等一阵),又或者整条视频只有音乐没有人声。不存在的字幕,什么工具都拿不到。
- 请求被区别对待了。 YouTube 把你的 IP 当成可疑来源时,你的代码拿到的页面看起来就像一个没字幕的视频。报错写的是禁用,问题其实出在请求上。
花很少的钱复查一遍
把同一个视频交给 YouTube 视频字幕。请求不是从你的 IP 发出去的,结果反映的就是视频本身:
curl -s -G "https://api.okdata.online/v1/youtube/videos/transcript/get" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
-d id=VIDEO_ID -d fields=lang,text
没有字幕的视频会这样返回,charged: false 说的就是不扣费:
{ "code": "not_found", "message": "No YouTube transcript with that ID was found.", "request_id": "…", "charged": false, "retry": "no" }
| 结果 | 费用 |
|---|---|
| 拿到字幕 | $0.004 |
not_found,没有字幕 |
0 |
| 任何错误(限流、超时、上游失败) | 0 |
所以复查那 30 个视频最多花 $0.12,真没字幕的每多一个就少花一份。
真没字幕的视频怎么办
- 刚发布的视频:隔一天再查,自动字幕经常晚一点才出来。
- 演讲、播客类:对你有权下载的音频跑 Whisper 之类的语音识别,这是没有字幕轨时唯一能拿到文字的办法。
- 教程类:先看简介。很多作者会把讲稿或章节贴在那里,YouTube 视频详情会把简介放在
text里返回,每次 $0.004。 - 自己频道的视频:在 YouTube Studio 里上传字幕,再重新获取。
让批处理的账算得清楚
每个视频记一个结果:ok、no_captions 或 error。错误的重试,新视频排到之后再查,剩下的才送去语音识别。返回结果不会标明字幕是作者上传的还是自动生成的,引用自动字幕里的原话时要多核对一下。
更新于