我正在使用Wordpress插件添加视频的时间戳链接,以便在特定时间范围内自动搜索视频。
Javascript:
function onYouTubeIframeAPIReady(){
console.log('Confirmation of call to onYouTubeIframeAPIReady()');
var STT = {
settings: STTSettings,
media: undefined,
skipTo: undefined,
isHTML5: false,
isYoutube: true,
doHTML5Skip: function() {
STT.media.removeEventListener('canplaythrough', STT.doHTML5Skip);
STT.media.currentTime = STT.skipTo;
STT.media.play();
},
doYoutubeSkip: function() {
STT.media.seekTo(STT.skipTo);
STT.media.playVideo();
}
};
STTSkipTo = function(time) {
var audio = document.getElementsByTagName('audio'),
video = document.getElementsByTagName('video'),
iframe = document.getElementsByTagName('iframe'),
timeArray = time.split(':').reverse(),
seconds = parseInt(timeArray[0]),
minutes = timeArray.length > 1 ? parseInt(timeArray[1]) : 0,
hours = timeArray.length > 2 ? parseInt(timeArray[2]) : 0;
STT.skipTo = seconds + (minutes * 60) + (hours * 3600);
if (STT.media) {
console.log(STT.media.seekTo);
STT.doSkip();
return;
}
if ((parseInt(STT.settings.link_audio) && audio.length) ||
(parseInt(STT.settings.link_video) && video.length))
{
STT.doSkip = STT.doHTML5Skip;
if (parseInt(STT.settings.link_audio) && audio.length) {
STT.media = audio[0];
} else {
STT.media = video[0];
}
STT.media.addEventListener('canplaythrough', STT.doHTML5Skip);
STT.media.load();
STT.media.play();
return;
} else if (parseInt(STT.settings.link_youtube && iframe.length)) {
// Inspect the iframes, looking for a src with youtube in the URI
for (var i = 0; i < iframe.length; i++) {
if (iframe[i].src.search('youtube') !== -1) {
// Set up the JS interface
STT.doSkip = STT.doYoutubeSkip;
iframe[0].id = 'stt-youtube-player';
STT.media = new YT.Player('stt-youtube-player', {
events: {
onReady: STT.doYoutubeSkip
}
});
return;
}
}
}
console.log('Skip to Timestamp: No media player found!');
return;
}
}
在我的本地主机上,该插件可以无缝运行,但在我的托管网站上,我在堆栈中收到以下错误:
我认为由于某种原因,该网站无法加载www-widgetapi.js,这是YouTube iframe API的依赖项,因此无法生成所需的函数定义。但是,我确实尝试在标题中手动包含脚本,但它仍然无法正常工作。
如果有人知道任何其他wordpress插件,请建议。
答案 0 :(得分:1)
根据此documentation,您需要同时设置player.seekTo(seconds:Number, allowSeekAhead:Boolean)
的两个参数。
寻找视频中的指定时间。如果在调用该功能时播放器暂停,它将保持暂停状态。如果从其他状态(
playing
,video cued
等)调用该功能,则播放器将播放该视频。
seconds
参数标识玩家应该前进的时间。
除非玩家已经下载了用户正在寻找的视频部分,否则玩家将在此之前前进到最近的关键帧。
allowSeekAhead
参数确定如果seconds
参数指定当前缓冲的视频数据之外的时间,播放器是否会向服务器发出新请求。
应该是:Player.seekTo(120, true)//120 seconds