这个问题本质上与这个问题相同,但有更多细节:
Soundcloud + SoundManager bug: reading a stream's eqData
所以我有一个使用canvas / svg /的可视化工具,当它从SoundCloud / SoundManager2接收EQData时看起来很棒,但有一些非常奇怪的事件正在发生,导致它不那么酷。
1.)当您使用SMSound.pause()或任何变体(SoundManager.togglePause等),然后恢复所有EQData / WaveformData时,它将停止进入SoundManager2,并将其置零。
2.)如果您停止曲目并重新启动它,则所有EQData / WaveformData都会停止。
3.)偶尔,在没有警告的情况下,EQData / WaveformData会停止进入SM2,可视化工具也会停止,如果我转到下一首曲目,它会重新启动,但对于一首超过30秒的歌曲,它从来没有100%工作过。
我还不能确定这是SoundCloud还是SoundManager2的问题,但似乎其他人也有问题,但到目前为止,我一直找不到任何解决方案。
链接在这里可用:http://nikru.com/viz/。它被剔除出网站,因为它是为客户的未启动的网站,他们还不想让公众看到。:)
任何帮助都是非常感谢的。
谢谢!
发布于 2012-07-25 14:14:04
好吧。我相信其他人也遇到过这种情况,但没有快速解决。我希望这对其他人有所帮助,因为我已经尝试了一天左右的可能性,并认为我有一个适合每个人的解决方案。
当SoundManager2第一次从http://api.soundcloud.com/tracks/9708215/stream?consumer_key={YOUR KEY}页面请求歌曲时,会发生什么情况。这是伟大的,歌曲可以播放只需查找,因为api.soundcloud.com有一个crossdomain.xml文件。但糟糕的是,下一个请求(暂停/播放或下一首/上一首曲目)的SoundManager2只是返回到它所知道的内容(这是一个301'd的页面,在ec-media.soundcloud.com上,正如我之前提到的,ec-media.soundcloud.com没有crossdomain.xml文件)这不是很好。我的修复方法是,每次我重新开始一首歌时,我会修改声音的URL,使其包含一个新的ts={ts=}参数,然后在SMSound上运行.load(),这会导致重新加载并修复问题。
var $track = $(this),
data = $track.data('track'),
playing = $track.is('.active');
newURL = soundManager.sounds["track_" + data.id].url.split("&ts=")[0];
newURL += "&ts=" + Math.round((new Date()).getTime() / 1000);
soundManager.sounds["track_" + data.id].url = newURL;
soundManager.sounds["track_" + data.id].load();
soundManager.sounds["track_" + data.id].url = newURL;然后,为了节省带宽,当歌曲暂停时,我实际上只是将其静音,并保存歌曲暂停的位置。当他们取消暂停时,我会在他们停止和取消静音的位置播放该曲目。这不是很好,但这是我们所能做的最好的(我认为)。
希望这对某些人有帮助。:)
https://stackoverflow.com/questions/11642556
复制相似问题