SoundCloud SDK / API回调事件未触发

时间:2015-06-30 16:46:47

标签: javascript api sdk soundcloud

这是一个我认为应该按照文档工作的简单示例。流播放,但回调不会发生。我是犯了错误,还是在SDK / API / SoundManager之间出现了错误?

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<h1>Sound Cloud API callback test</h1>
<script src="//connect.soundcloud.com/sdk-2.0.0.js"></script>
<script type="text/javascript">
  SC.initialize({
      client_id: "YOUR_CLIENT_ID"
  });

  SC.stream(
          '/tracks/293',
          {
              onload: function() { console.log("Does not fire."); },
              onplay: function() { console.log("Does not fire."); },
              onfinish: function() { console.log("Does not fire."); }
          },
          function(sound) { sound.play(); });
</script>
</body>
</html>

这是一个类似的问题,但没有答案。 Soundcloud Javascript SDK 2.0 - Stream onfinish event does not execute

2 个答案:

答案 0 :(得分:4)

使用html5时,您可以直接定位音频元素,并将自定义操作绑定到回调事件上。以下示例大致相当于您未触发的SDK事件。这是一种解决方法,但由于html5是默认方法,因此对于包括iOS在内的常见用途而言它是可靠的。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>Sound Cloud API callback test</h1>
<script src="//connect.soundcloud.com/sdk-2.0.0.js"></script>
<script type="text/javascript">
    SC.initialize({
        client_id: "YOUR_CLIENT_ID"
    });

    SC.stream(
            '/tracks/293',
            function(sound) {
                html5Audio = sound._player._html5Audio;
                html5Audio.addEventListener('canplay', function(){ console.log('event fired: canplay'); });
                html5Audio.addEventListener('play',    function(){ console.log('event fired: play'); });
                html5Audio.addEventListener('ended',   function(){ console.log('event fired: ended'); });
                sound.play();
            });
</script>
</body>
</html>

此处列出了更多可用的html5媒体事件:
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events

答案 1 :(得分:2)

我无法发表评论,因此请将其视为一个。由于原因不明(至少对我来说)你在SDK 2中作为声音对象实际获得的是播放器,而不是轨道。如果您使用sdk.js,它确实可以正常工作。