我最近检测到 loadVideoById 的 startSeconds 不起作用。我看到它移动到 startSeconds 的时间,但它立即移动到之前播放过的剪辑的时间,但我测试了之前未播放的另一个剪辑 B,播放器寻求 startSeconds,如果我寻找剪辑的滑块时间B 使用 startSeconds 运行脚本时也会出现同样的失败。似乎优先移动到视频的当前位置。 我举个例子:如果剪辑在 01:48:27 停止或播放,则脚本以 startSeconds (03:46:58) 运行 播放器移动到 03:46:58,然后返回到 01:48:04 或之后不到几秒。 我认为 IFrame API 的一个新错误。
希望您尽快修复该错误,并支持将带有开始时间的剪辑添加到 YouTube 网站的播放列表中。
我刚刚遇到这个问题。我有一个页面,其中包含许多视频卡和一个“空”播放器,在用户单击卡之前一直隐藏。播放器加载单击的卡片的视频。
loadVideo
和cueVideo
都有这个问题。我发现唯一有效的是seekTo
,但视频必须已经在播放了。 cueVideo
> seekTo
> playVideo
忽略了 seekTo
命令。这并不理想,如果视频已经开始播放,那么在 seekTo
开始之前,它会持续一小会儿。通过将 seekTo
括起来并暂停/播放,可以将其最小化。
我使用
onStateChange
事件来监听 PLAYING
,但它还需要一个首次运行变量,否则每次脱离缓冲状态时它都会不断地寻找。为此,我向 videoLoaded
添加了一个
player
变量物体。
我的空玩家对象:
function onYouTubeIframeAPIReady() {
player = new YT.Player('video-player-iframe', {
playerVars: {
'playsinline': 1
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
选择视频时运行的我的自定义
playVideo
函数:
const playVideo = (videoID) => {
player.videoLoaded = false;
player.loadVideoById(videoID, startSeconds = 0);
....
}
和我的
onStateChange
管理员:
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !player.videoLoaded) {
player.videoLoaded = true;
player.pauseVideo();
player.seekTo(0);
player.playVideo();
}
}
搜了一下这个问题,好像已经存在很久了。