【发布时间】:2017-02-11 19:28:29
【问题描述】:
有谁知道如何覆盖 YouTube 的“恢复播放”功能?我需要我网站上嵌入的 YouTube 视频每次都从头开始,而不是用户上次停止的地方。
过去,YouTube 上的恢复播放功能仅适用于 20 分钟或更长时间的视频,但最近几周,YouTube 似乎已将该功能推广到所有视频。
我以为我可以将开始时间设置为 0 秒,或者在播放器初始化后搜索到 0 秒。但这不起作用。通过任何方法将开始时间设置为 0 都会导致视频从用户上次停止的位置继续播放(如果用户已登录 YouTube)。
这是我的默认 YouTube iframe API 代码:
<div id="yt-player"></div>
<script>
var player;
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubePlayerAPIReady() {
player = new YT.Player("yt-player", {
height: "433",
width: "770",
videoId: "[YOUTUBE_VIDEO_ID]",
playerVars: {
autoplay: 1,
html5: 1,
rel: 0
},
events: {
onReady: onPlayerReady,
onStateChange: onPlayerStateChange
}
})
}
function onPlayerReady(e) {
//...
}
function onPlayerStateChange(e) {
//...
}
</script>
到目前为止我已经尝试过:
将开始时间设置为 0 秒
...
playerVars: {
autoplay: 1,
html5: 1,
rel: 0,
start: 0
},
...
在玩家准备好时寻求 0 秒
function onPlayerReady(e) {
player.seekTo(0);
}
在播放器状态 = 播放后寻求 0 秒
function onPlayerStateChange(e) {
if(e.data==1)player.seekTo(0);
}
将自动播放设置为 false,然后在播放器就绪时调用 playVideo()
...
playerVars: {
autoplay: 0,
html5: 1,
rel: 0
},
...
function onPlayerReady(e) {
player.playVideo();
}
以上都不起作用(播放器就绪时的 seekTo 有时确实起作用,但更多时候不起作用。播放器将加载到用户的最后一个位置,按照指示搜索到 0,然后跳回到用户之前的最后一个位置播放。我也尝试寻求-1但没有运气)
我能找到的唯一解决方法是将开始时间设置为 1 秒(或在玩家准备好时寻求 1 秒)。但这显然不是一个理想的解决方案。
有没有人有任何建议或知道解决方法?谢谢。
【问题讨论】:
标签: javascript jquery api youtube