一次又一次检查后,我注意到如果我加载一个播放列表:
player.loadPlaylist(videoCodeList, start);
然后,我不会在播放列表中的每个视频结束后触发ENDED事件,但只会在播放列表本身结束时触发。
如果是单个视频播放列表,则会在视频结尾处触发ENDED事件
为什么有人注意到了这一点?
我想要实现的是,如果用户要求只播放单首歌曲,即使它是播放列表的一部分,也会在视频结尾处停止播放。
<html>
<body>
<div id="player"></div>
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var videoCodeList = playlistObject.getCodeList();
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
playerVars:{rel:0, showinfo:0},
events: {
'onReady': onPlayerReady
,'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
var start = playlistObject.getStart();
player.loadPlaylist(videoCodeList, start);
}
function onPlayerStateChange(event) {
if (event.data == 0 && playSingle.findChecked()){
player.stopVideo();
}
}
</script>
</body>
</html>""")
答案 0 :(得分:1)
我希望我的问题指出一个真正的问题,我再次检查它几个小时没有解决方案 我还发布了一个报告错误的报告。 undere&#39; issue 6408&#39;希望报告一个真正存在的问题。
与此同时,我解决了这个问题:
我在javascript代码中添加了一个信号/插槽连接,使用QtWebKit桥接技术:( playSingle是一个暴露于javascript代码的QAction)
playSingle.toggled.connect(playCurrentOnly);
playSingle动作触发信号切换,每次按下工具栏按钮选择“播放单曲”#
;
并添加了'playCurrentOnly&#39;函数在javascript代码中输入这个信号:
function playCurrentOnly(){
var currentTime = player.getCurrentTime();
player.stopVideo();
player.seekTo(currentTime, true);
在继续播放歌曲之前,只需稍微短暂停顿即可正常工作。