如何在soundcloud javascript api中暂停流式传输
我想允许声音文件播放和暂停。 该文档显示了如何播放流文件:
$("#stream").live("click", function(){ SC.stream("/tracks/{'track-id'}", function(sound){ sound.play(); };
它使用Sound Manager来传输和使用它的一些对象和方法……比如.pause()!
所以这是我认为应该工作的代码:
var is_playing="false"; $("#stream").live("click", function(){ SC.stream("/tracks/{'track-id'}", function(sound){ if (is_playing==="true") { sound.pause(); is_playing = "false"; console.log(is_playing); } else if (is_playing === "false") { sound.play(); is_playing = "true"; console.log(is_playing); } });
然而,它继续播放轨道而没有停顿。 有任何想法吗? 谢谢。
var is_playing = false; soundManager.setup({ url: '/swf/soundmanager2.swf', preferFlash: false, onready: function() { var mySound = soundManager.createSound({ id: 'aSound', url: 'sonidos/sonido1.mp3' , autoplay: false }); $("#stream").live("click", function(){ if (is_playing==false){ mySound.play(); is_playing = true; }else if (is_playing== true) { mySound.stop(); is_playing = false; } }); }, /* ontimeout: function() { // Hrmm, SM2 could not start. Missing SWF? Flash blocked? Show an error, etc.? }*/ });
你必须使用sound.stop();
还有一个内置function可以切换声音的播放/暂停。 使用sound.togglePause();
要做到这一点。
SC.stream("/tracks/13680213", function(sound) { SC.sound = sound; });
这意味着您不是在SC.stream构造函数中编写事件侦听器,然后您可以随意访问以下(以及更多):
SC.sound.play(); SC.sound.pause(); SC.sound.stop(); SC.sound.pause(); SC.sound.playState;
由于关于这个问题的答案很少,我想我会回答我自己的问题。
我继续下载Sound Manager 2并将必要的文件放在需要的位置(您可以在声音管理器2页面的基本教程部分找到它。)
http://www.schillmania.com/projects/soundmanager2/demo/template/
诀窍是找到与我想要嵌入的用户相关联的SoundCloud mp3。 为此,我必须使用RESTClient并输入相应的api url。 看起来像这样。
http://api.soundcloud.com/tracks/12758186.json?client_id= {MyClient_ID_number}
http://api.soundcloud.com/tracks/是轨道id =“12758186”的通用指针。 接下来是JSONP包含我的个人client_id以validation我对soundcloud服务器的请求。
一旦我有了这个url,我就在我的浏览器中尝试了它,并将其重定向到另一个url**,其中包含一个自动播放该歌曲的HTML5 mp3播放器。
我从这个soundcloud doc获得了这个想法: http : //developers.soundcloud.com/docs#playing
然后我复制了这个url并将我原来问题中的代码捣碎到上面提到的基本教程( http://www.schillmania.com/projects/soundmanager2/demo/template/ )。
最终守则:
var is_playing = false; $("#stream").live("click", function(){ soundManager.setup({ url: './swf/soundmanager2.swf', onready: function() { var mySound = soundManager.createSound({ id: 'aSound', url: {**another url**}, autoplay: false }); if (is_playing===false) { mySound.play(); is_playing = true; } else if (is_playing=== true) { mySound.stop(); is_playing = false; } }, ontimeout: function() { // Hrmm, SM2 could not start. Missing SWF? Flash blocked? Show an error, etc.? } }); });
只需将您想要触发暂停function的事件链接到传递给SC.stream()的回调函数的“声音”对象。
以下代码中的表单接受声音云链接,例如: https : //soundcloud.com/djalmix-1/living-in-stereo-dj-almix (因此,一旦应用程序处于活动状态,请将其粘贴到表单中并单击加载)。 此外,您必须提供自己的client_id,soundcloud会在您注册应用时提供给您,这只需要一分钟左右。