有没有办法从通过 JavaScript 嵌入的 YouTube 视频中获取 CHAPTERS?

Posted

技术标签:

【中文标题】有没有办法从通过 JavaScript 嵌入的 YouTube 视频中获取 CHAPTERS?【英文标题】:Is there a way to get CHAPTERS from a YouTube video embedded via JavaScript? 【发布时间】:2021-11-02 21:33:59 【问题描述】:

在包含这个 YouTube iframe API 脚本之后 https://www.youtube.com/iframe_api 可以将 youtube 视频放入容器中(例如“container_id”),并在其页面元素上使用“seekTo()”和“play()”等方法。 (iframe 之外的任何地方)

var player = new YT.Player('container_id', 
    videoId: 'video_id'
);

可以像YT.get("container_id") 那样访问视频对象。可以通过这样做YT.get("container_id").seekTo(60) 滚动到 1 分钟标记,但我似乎无法在其中找到“章节”对象。 “章节”是由时间戳分隔的视频片段,像这样。

如果有办法将它们作为数组或对象或其他东西获取,但我似乎在YT.get("container_id") 结果对象中找不到它。

生成的 iFrame 确实将它们包含为 html 标签,但它没有像“开始于”或“章节标题”这样的元数据,并且由于 CORS 的恶作剧而无法真正访问。 YouTube iframe api 是否会发送章节数据(如果存在)? (很多视频都没有)

【问题讨论】:

【参考方案1】:

我不认为 API 对章节有任何功能。

章节的工作方式是they are derived from the timestamps put in the video description。 因此,虽然这是一种变通方法,但如果您确实想获取视频的章节信息,您可以解析描述以获取时间戳及其名称。

我在 API 页面上快速运行了 Ctrl+F 以查看 iFrame API 是否允许您访问视频描述,但似乎并非如此。不过我可能是错的,在这种情况下请忽略下面的说明。

为了获得描述,如果你有视频 ID,你可以使用 Youtube Data API(不同的 api,所以你可能需要另一个 api 密钥),特别是来自 Videos 的 list method部分。您可以通过传递“sn-p”作为“part”参数的参数来获取描述。

【讨论】:

看来你是对的。 youtube 本身使用什么算法在您认为的视频上生成这些字幕?一个正则表达式?你觉得会是什么?我至少暂时将其标记为答案,但我也同意这是唯一的方法。

以上是关于有没有办法从通过 JavaScript 嵌入的 YouTube 视频中获取 CHAPTERS?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery / PHP - 从外部页面嵌入图像

C 中的嵌入式 python:有没有办法从压缩的 python 存档中正确导入 numpy?

在嵌入式 Google 地图上禁用鼠标滚轮缩放

有没有办法在Android上将arraybuffer从javascript传递到java?

有没有办法将多个 Plotly HTML 文件离线合并/嵌入到一个页面/HTML 文件中?

嵌入式系统上的单页应用程序[关闭]