1

SoundManager2 出现数据错误,我无法可视化任何内容?

或者

我无法访问歌曲,权限被拒绝?

或者

我第一次播放时它可以工作,但是如果我暂停它并再次播放,我会收到数据错误?

4

1 回答 1

5

这最近已得到修复,部分原因是所需文件的一半在那里。现在它已修复,但它仍然可能无法立即工作。

显而易见的第一步是您使用 api 获取轨道 stream_url,它看起来像http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID

如果你在 SoundCloud 中使用它作为媒体 url,你会发现你按下了播放,如果你有可视化,它们就可以工作,一切都很好。但是,如果您现在暂停曲目,然后再次按播放,您将收到数据错误,元数据将不再可访问,并且您的可视化将中断。这是因为api.soundcloud.com有一个跨域文件,当你访问它时,你会得到一个 3XX 重定向到ec-media.soundcloud.com. 这个站点现在也有一个 crossdomain.xml 文件,但是讨厌的 3XX 重定向破坏了这两个权限,所以你遇到了一个错误。

答案是您首先在 soundmanager2 之外进行重定向跳跃,这样就没有重定向会破坏它。例如在 Python 中:

import urllib2
starturl = 'http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID'
res = urllib2.urlopen(starturl)
finalurl = res.geturl()
print finalurl

这可能更优雅,但它会打印 api 重定向到的 url。这个网址看起来像http://ec-media.soundcloud.com/2j0lNF81jv9m.128.mp3?LONG_STRING&AWSAccessKeyId=ACCESS_KEY&Expires=1355864871&Signature=SIGNATURE

这个域有crossdomain.xml文件,由于没有重定向,所以一切顺利,数据访问,一切顺利。

“我这样做了,它有效,但现在它说该文件被禁止”

现在我们提请您注意之前的 url,特别是&Expires=1355864871. 您被重定向到的文件不是永久的,因此您每次都需要抓取它。对我来说这很容易,我在 django 中工作,所以我可以简单地在我的视图脚本中运行上面的 python。您必须找到一种方法在您选择的代码中实现这一点。(也应该在 javascript 中工作)。

完成所有这些之后,您应该可以随意暂停和播放,并检索波形数据、EQ 数据和峰值数据。有了这些东西,就可以做一些有趣的事情了。希望这有帮助。

于 2012-12-18T21:22:33.767 回答