Youtube iframe播放器api仅在播放列表结束时触发事件END

时间:2014-06-03 00:07:05

标签: javascript iframe pyqt youtube-javascript-api

一次又一次检查后,我注意到如果我加载一个播放列表:

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>""")

1 个答案:

答案 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);

在继续播放歌曲之前,只需稍微短暂停顿即可正常工作。