Javascript:从soundcloud api设置轨道位置

时间:2013-08-02 02:21:39

标签: javascript soundcloud soundmanager2

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

Soundcloud API: how to play only a part of a track?

下面是我使用过的代码

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()
})

3 个答案:

答案 0 :(得分:1)

根据SoundCloud's docs,他们使用SoundManager2来处理播放,因此您应该能够使用its methodssettings中的任何一个。试试这个:

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();
  });
}

答案 1 :(得分:1)

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

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

sound.seek(1500);

这是一个更好的例子:

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

如果你想在回调之外访问搜索功能,我会这样做:

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

  var buttonClickEvent = function(){
    soundTrack.seek(1500);
  }

答案 2 :(得分: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 );
                }
            });
        });
    });

}