从 iframe 标签中获取嵌入式 youtube 播放列表视频的当前时间戳
Get current timestamp of embedded youtube playlist videos from the iframe tag
我在我的网站上嵌入了一个 youtube 视频(这是一个播放列表 link),我想在用户播放视频时获取视频的时间戳。 youtube 视频嵌入在我的网站上:
<iframe src="//www.youtube.com/embed/eykoKxsYtow?list=PLeo1K3hjS3usILfyvQlvUBokXkHPSve6S" width="560" height="314" allowfullscreen="allowfullscreen"></iframe>
现在播放这个视频的时候,我想获取视频的当前时间戳。我想将其存储在我的数据库中,以便下次用户登录我的网站时我可以开始播放视频。如何使用 Javascript?
执行此操作
这是我试过的。
ytplayer = document.getElementsByTagName("iframe")[0];
ytplayer.getCurrentTime();
抛出错误:
VM1406:1 Uncaught TypeError: ytplayer.getCurrentTime is not a function
at <anonymous>:1:10
获得时间戳后,现在我还想在用户再次登录时将视频设置为该时间戳。如何使用 Javascript 设置视频位置?
我需要完整的工作代码,youtube API 有点难理解。
你可以试试这个,效果很好。
将其放入您的 html 文件中。
<div id="player"></div>
现在从 iframe
标签
获取视频的 link
let url = document.getElementsByTagName('iframe')[0].src;
从 link
获取视频的 ID
function youtube_parser(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
return (match&&match[7].length==11)? match[7] : false;
}
let video_id = youtube_parser(url);
拿到 video_id
后,现在就可以开始了。
<script>
// This code loads the IFrame Player API code asynchronously.
let tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
let firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// This function creates an <iframe> (and YouTube player) after the API code downloads.
// player is a global variable
let player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '360',
width: '640',
videoId: video_id,
events: {
'onReady': onPlayerReady,
}
});
}
</script>
现在您可以使用 player
变量进行 ajax 调用,此变量类似于您的 javascript video player element
,您可以使用此变量处理所有视频相关事件。
function onPlayerReady(event) {
$.ajax({
//make ajax call to get the timestamp of the video fro the database, if the user has watched this video.
event.target.playVideo();
});
}
let interval = setInterval(function(){
$.ajax({
// Make AJAX call to store the timestamp of video already watched at regular time intervals
});
}, time_interval);
我在我的网站上嵌入了一个 youtube 视频(这是一个播放列表 link),我想在用户播放视频时获取视频的时间戳。 youtube 视频嵌入在我的网站上:
<iframe src="//www.youtube.com/embed/eykoKxsYtow?list=PLeo1K3hjS3usILfyvQlvUBokXkHPSve6S" width="560" height="314" allowfullscreen="allowfullscreen"></iframe>
现在播放这个视频的时候,我想获取视频的当前时间戳。我想将其存储在我的数据库中,以便下次用户登录我的网站时我可以开始播放视频。如何使用 Javascript?
执行此操作这是我试过的。
ytplayer = document.getElementsByTagName("iframe")[0];
ytplayer.getCurrentTime();
抛出错误:
VM1406:1 Uncaught TypeError: ytplayer.getCurrentTime is not a function
at <anonymous>:1:10
获得时间戳后,现在我还想在用户再次登录时将视频设置为该时间戳。如何使用 Javascript 设置视频位置?
我需要完整的工作代码,youtube API 有点难理解。
你可以试试这个,效果很好。
将其放入您的 html 文件中。
<div id="player"></div>
现在从 iframe
标签
let url = document.getElementsByTagName('iframe')[0].src;
从 link
获取视频的 IDfunction youtube_parser(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
return (match&&match[7].length==11)? match[7] : false;
}
let video_id = youtube_parser(url);
拿到 video_id
后,现在就可以开始了。
<script>
// This code loads the IFrame Player API code asynchronously.
let tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
let firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// This function creates an <iframe> (and YouTube player) after the API code downloads.
// player is a global variable
let player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '360',
width: '640',
videoId: video_id,
events: {
'onReady': onPlayerReady,
}
});
}
</script>
现在您可以使用 player
变量进行 ajax 调用,此变量类似于您的 javascript video player element
,您可以使用此变量处理所有视频相关事件。
function onPlayerReady(event) {
$.ajax({
//make ajax call to get the timestamp of the video fro the database, if the user has watched this video.
event.target.playVideo();
});
}
let interval = setInterval(function(){
$.ajax({
// Make AJAX call to store the timestamp of video already watched at regular time intervals
});
}, time_interval);