0

我一直在尝试在特定位置播放 Soundcloud 中的曲目。我已使用以下问题中的代码作为参考

Soundcloud API:如何只播放曲目的一部分?

下面是我用过的代码

function playTrack(id) {
  SC.whenStreamingReady(function() {
    var sound = SC.stream(id);
    sound.setPosition(240000); // position, measured in milliseconds
    console.log(sound.position)
    sound.play()
  });
}

console.log 返回 0,曲目从头开始播放。

我尝试过并得到相同结果的替代代码如下

SC.stream("/tracks/" + id, function(sound){
  console.log("playing")
  console.log(sound)
  sound.setPosition(120000)
  console.log(sound.position)
  sound.play()
})
4

3 回答 3

1

根据SoundCloud 的文档,他们使用SoundManager2来处理播放,因此您应该能够使用它的任何方法设置。试试这个:

function playTrack(id) {
  SC.whenStreamingReady(function() {
    var sound = SC.stream(id, {
      from: 120000, // position to start playback within a sound (msec)
      autoLoad: true,
      autoPlay: true,
      onplay: function(){ console.log(this.position) }
    });
  });
}

如果这不起作用,你可以试试这个:

function playTrack(id) {
  SC.whenStreamingReady(function() {
    var sound = SC.stream(id, { autoPlay: false }, function(sound){
      sound.setPosition(240000); // position, measured in milliseconds
      console.log(sound.position);
      sound.play();
    });
    sound.load();
  });
}
于 2013-08-02T21:09:00.253 回答
1

由于 soundcloud 不再使用 soundmanager。上述方法将不再有效。

必须做的是使用名为“seek()”的函数而不是“setPosition()”

sound.seek(1500);

这是一个更好的例子:

  SC.stream(
    "/tracks/[trackID]",
    function(sound){
      sound.seek(1500)
  });

如果你想在回调之外访问 seek 函数,我会这样做:

  var soundTrack;
  SC.stream(
    "/tracks/[trackID]",
    function(sound){
      soundTrack = sound;
  });

  var buttonClickEvent = function(){
    soundTrack.seek(1500);
  }
于 2015-09-18T16:47:33.267 回答
0

这应该工作 -

var play_sound = function(id) {

    SC.whenStreamingReady(function() {
        var sound = SC.stream("/tracks/"+id,{autoPlay: false}, function(sound) {
            sound.play({
                whileplaying: function() {
                    console.log( this.position );
                }
            });
        });
    });

}
于 2013-09-02T13:24:53.627 回答