我一直在尝试在特定位置播放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()
})
答案 0 :(得分:1)
根据SoundCloud's docs,他们使用SoundManager2来处理播放,因此您应该能够使用its methods或settings中的任何一个。试试这个:
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 );
}
});
});
});
}