SoundManager2出现数据错误,我无法直观显示任何内容?
或
我无法访问该歌曲,权限被拒绝?
或
当我第一次播放它时它会起作用,但是如果我暂停它并再次播放,我会收到数据错误吗?
答案 0 :(得分:5)
最近已修复此问题,部分原因是所需文件的一半存在。现在它已被修复,但它仍然可能不起作用。
显而易见的第一步是使用api来获取跟踪stream_url,它看起来像http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID
如果你在SoundCloud中使用它作为媒体网址,你会发现你按下播放,如果你有可视化,它们就可以工作,一切都很好。但是,如果您现在暂停轨道并再次按下播放,则会出现数据错误,元数据将无法访问,并且您的可视化将中断。这是因为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文件,由于没有重定向,事情会顺利进行,数据会被访问,一切都会很好。
“我做了这个并且它有效,但现在它说该文件是被禁止的”
现在我们将您的注意力吸引到前一个网址,特别是&Expires=1355864871
。您重定向到的文件不是永久性的,因此您每次都需要抓取它。对我来说这很简单,我在django工作,所以我可以在我的视图脚本中运行上面的python。您必须找到一种方法在您选择的代码中实现它。 (也应该在javascript中工作)。
完成所有这些操作后,您应该可以根据需要暂停和播放,并检索波形数据,EQ数据和峰值数据。有了这些东西,可以做一些有趣的事情。希望这有帮助。