获取当前的 YouTube 视频时间

IT技术 javascript youtube
2021-01-25 09:38:51

我正在编写一个浏览器插件,需要找到一种方法来获取使用 JavaScript 在 YouTube 上播放的 YouTube 视频的当前时间。我一直在 Chrome JavaScript 控制台中玩,但没有任何运气。

似乎 chrome API 仅适用于嵌入式视频播放器,而不适用于在 youtube.com 上播放的视频。我研究的一个选项是在视频的共享部分,它们是“开始时间:”时间的输入框,其中包含视频的当前时间。我试过在这个输入框上使用 .value 和 .text ,它们都返回 undefined?有没有人有任何想法?

6个回答
ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();

api

更新:如果它不起作用,也试试player.playerInfo.currentTimecodepen live example

@zxcat 您是否确保enablejsapi在引用视频时包括在内developer.google.com/youtube/player_parameters#enablejsapi
2021-03-24 09:38:51
谢谢。我还没有弄清楚 document.getElementById("movie_player");。
2021-03-28 09:38:51
我想 :) 我只知道它,因为我尝试过一次,并在想我知道这个……我又是怎么做到的?XD
2021-03-29 09:38:51
它在 iOS 上不起作用(在 9.2 上检查)。playervar 没有需要的方法。即使使用 IFrame API 创建new YT.Player()
2021-03-30 09:38:51
@JosephMarikle,当然。我接到了onYouTubePlayerAPIReady或 的电话onYouTubeIframeAPIReady,看到我的player已经改变了。但是在 iOS 上它没有方法来控制自己。
2021-04-12 09:38:51

取决于你想要什么

player.getCurrentTime():Number

返回自视频开始播放以来经过的时间(以秒为单位)。

player.getDuration():Number

返回当前播放视频的持续时间(以秒为单位)。请注意,getDuration() 将返回 0,直到加载视频的元数据,这通常发生在视频开始播放之后。

http://code.google.com/apis/youtube/js_api_reference.html

最后我找到了如何让它在 iOS(和 Android)上运行。
实际上,如果在移动浏览器上运行,整个youtube js api对我来说就坏了。

通过使用YouTube IFrame API 中所述创建播放器解决了问题new YT.Player

请注意:当时只有<iframe><div>占位符创建才适用于移动浏览器。如果您尝试<iframe>new YT.Player调用中使用现有,如 IFrame API 中所述,这将不起作用。

播放器创建后,可以使用player.getCurrentTime()player.getDuration()player创建的实例一起使用

注意:我没有运气在获得的玩家上调用这个方法
player = document.getElementById(...)(来自@JosephMarikle 的回答)。
只有创建的player实例在移动浏览器中有效。


有用的链接:

您可以使用HTML5视频APIyoutube.com

var htmlVideoPlayer = document.getElementsByTagName('video')[0];
htmlVideoPlayer.currentTime

注意:它不适用于 Youtube Iframe API,因为 Iframe 是孤立的。您无法访问 Youtube IFrame 的上下文。

在 2020 年,这有效:

player.playerInfo.currentTime

完整代码: 在 codepen 上实时查看