如何从YouTube视频中提取闭路字幕?

如何从YouTube视频中提取闭路字幕?,youtube,caption,Youtube,Caption,可以从YouTube视频中提取闭路字幕记录吗 我们在YouTube上有200多个网络广播,每个广播至少一小时。YouTube已经为所有视频设置了闭路字幕,但用户似乎无法获取 我在这个博客中尝试了这个URL,但它与我们的视频不兼容 以下文档称只有频道所有者才能通过标准youtube界面执行此操作: 廉价修复: 您可以单击“interactive transscript”按钮,并以这种方式复制内容。 当然,这样会损失毫秒数 非常便宜的解决方案: 共享youtube帐户- 这样多人可以编辑和上传字幕

可以从YouTube视频中提取闭路字幕记录吗

我们在YouTube上有200多个网络广播,每个广播至少一小时。YouTube已经为所有视频设置了闭路字幕,但用户似乎无法获取

我在这个博客中尝试了这个URL,但它与我们的视频不兼容


以下文档称只有频道所有者才能通过标准youtube界面执行此操作:

廉价修复: 您可以单击“interactive transscript”按钮,并以这种方式复制内容。 当然,这样会损失毫秒数

非常便宜的解决方案: 共享youtube帐户- 这样多人可以编辑和上传字幕文件

具有挑战性的解决方案: youtube API允许通过HTTP下载和上传字幕文件。。。 您可以编写youtube API应用程序,为任何用户或特定用户提供用于上载或下载的浏览器用户界面

下面是一个java中的示例项目

下面是一个非常简单的上传示例:
您可以使用从YouTube下载流式字幕


您可以从自动抄本或作者提供的字幕中进行选择。它还提供了使用谷歌翻译将英文字幕自动翻译成其他语言的可能性

以下是如何获取YouTube视频的成绩单(如果可用):

  • 转到YouTube并打开您选择的视频
  • 单击“共享”按钮旁边的“更多操作”按钮(3个水平点)
  • 点击“打开成绩单”
虽然语法可能有点愚蠢,但这是一个相当好的解决方案

来源:

(强制要求“这可能是youtube.com的内部接口,随时可能中断”)

这里不是链接到另一个这样做的工具,而是对“如何做”问题的回答

使用或使用浏览器开发工具(例如。 )要检查youtube.com的HTTP流量,有一个来自
/api/timedtext
的响应,其中包含XML格式的闭路字幕信息

这样的回答似乎是:

    <p t="0" d="5430" w="1">
        <s p="2" ac="136">we&#39;ve</s>
        <s t="780" ac="252"> got</s>
    </p>
    <p t="2280" d="7170" w="1">
        <s ac="243">we&#39;re</s>
        <s t="810" ac="233"> going</s>
    </p>

您可以通过访问来查看/复制/下载youtube闭路字幕文件的时间编码xml文件

http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]
例如
http://video.google.com/timedtext?lang=pt&v=WSVKbw7LC2w


注意:此方法不会下载自动生成的闭路字幕,即使您获得了正确的语言(可能有自动生成语言的特殊代码)。

从投票向上/向下和共享链接右侧的
下拉列表中选择
Open Transcript

这将在右侧打开一个
Transcript
滚动div

然后可以使用
复制
。请注意,您不能使用
全选
,但需要单击顶行,然后使用滚动拇指滚动到底部,然后按住shift键并单击最后一行


请注意,您也可以使用普通的网页搜索在该文本中进行搜索。

我只是在视频开头打开成绩单,在00:00标记处左键单击并拖动,并在开头几行上按下shift键,就可以轻松地完成这项工作

然后我将视频推进到接近尾声的地方。当视频停止时,我再次按住shift键,同时单击最后一句的结尾。我用CTRL-C将文本复制到剪贴板并粘贴到编辑器中

完成了


警告:确保没有共享剪贴板的RDP窗口或Teamviewer等软件同时运行,因为此过程将在复制大量文本时溢出缓冲区。

另一个选项是使用
youtube dl

youtube dl--跳过下载--写入自动sub$youtube\u url
默认格式为
vtt
,另一种可用格式为
ttml
--子格式ttml

——写入子对象
写字幕文件
--写自动子程序
写入自动生成的字幕文件(仅限YouTube)
--所有潜艇
下载视频的所有可用字幕
--列表子节点
列出视频的所有可用字幕
--子格式
字幕格式,接受格式首选项,例如:“srt”或“ass/srt/best”
--次郎朗
要下载的字幕语言(可选)由逗号分隔,使用--list sub作为可用的语言标记
您可以使用
ffmpeg
将字幕文件转换为其他格式:

ffmpeg-i input.vtt output.srt
这就是VTT字幕的样子:

WEBVTT
种类:字幕
语言:en
00:00:01.429-->00:00:04.249对齐:起始位置:0%
女士们先生们,我要感谢你们
00:00:04.249-->00:00:04.259对齐:起始位置:0%
女士们先生们,我要感谢你们
00:00:04.259-->00:00:05.930对齐:起始位置:0%
女士们先生们,我要感谢你们
谢谢你今晚来,尤其是在
00:00:05.930-->00:00:05.940对齐:起始位置:0%
谢谢你今晚来,尤其是在
00:00:05.940-->00:00:07.730对齐:起始位置:0%
谢谢你今晚来,尤其是在
这么短的通知
00:00:07.730-->00:00:07.740对齐:起始位置:0%
这么短的通知
00:00:07.740-->00:00:09.620对齐:起始位置:0%
这么短的通知
我相信欧文先生会告诉你的
00:00:09.620-->00:00:09.630对齐:起始位置:0%
我相信欧文先生会告诉你的
00:00:09.630-->00:00:11.030对齐:起始位置:0%
我相信欧文先生会告诉你的
给我们带来的环境
00:00:11.030-->00:00:11.040对齐:起始位置:0%
给我们带来的环境
以下是相同的字幕,文件顶部没有部分,也没有标签:

00:00:01.429-->00
http://video.google.com/timedtext?lang=[LANGUAGE]&v=[YOUTUBE VIDEO IDENTIFIER]
pip install youtube_transcript_api