我正在尝试从SoundCloud获取一个mp3文件,并将该文件与SoundJS(来自CreateJS)一起使用来制作音乐可视化工具。但是有一个问题。当我从SoundCloud将文件路径分配给流mp3链接时,音乐不会被加载,代码卡在createjs.Sound.registerSound(src); // register sound, which preloads by default
。但是当我在我的服务器上分配一个文件时,它就可以了。
这是我得到的错误:
[Error] TypeError: 'undefined' is not an object (evaluating 'a.toString')
_parsePath (createjs-2013.12.12.min.js, line 15)
registerSound (createjs-2013.12.12.min.js, line 15)
init (MusicVisualizer.html, line 108)
onload (MusicVisualizer.html, line 9)
这有效:
var assetsPath = "assets/"; // Path were mp3 is stored
var src = assetsPath + "Underground.mp3"; // set up the source
但这不是:
var src = 'http://api.soundcloud.com/tracks/'+track_id+'/stream?client_id='+client_id';
我输入了好的track_id和client_id。因为当我将链接粘贴到我的webbrowser中时,链接会从SoundCloud重定向到带有访问代码和签名等的mp3文件,然后我可以看到该文件并播放它。上面的链接会立即重定向到 http://soundcloud.vo.llnwd.net/PEPEnVEvnxwb.128.mp3?AWSAccessKeyId=AKIAJNIAGLK7XA7YZSNQ&Expires=1323978179&Signature=yxVIOjsdOiwhlLOtCnk3aI1YN4M%3D&e=1298204179&h=7103a8645083f828f21e6d41aa0b96b5
这样的链接所以,简而言之,我无法通过链接播放mp3文件,但我可以在服务器上播放它。 你有解决这个问题的方法吗?
由于
答案 0 :(得分:0)
我在下一个方面看到了解决方案:
将您重定向到.mp3
文件的SoundCloud服务器并不像您想象的那样愚蠢。它会根据您的请求读取标题,并决定是否允许您收听音乐。重定向也可能存在困难。
所以你应该尝试的第一件事是编写代理。
用PHP编写的简单代理应该可以正常工作。或者您可以将Node.js用于此目的。
它必须做的唯一事情是为您的请求设置正确的标头,如果重定向有问题,那么直接链接作为对该代理的响应。
答案 1 :(得分:0)
这种方法有两个问题会阻止它工作。
目前,SoundJS仅处理加载文件(Underground.mp3),它无法处理重定向或代理或任何既没有音乐文件类型(.mp3,.ogg等)又返回可加载文件的内容。
第二个问题是SoundJS不处理流文件,因此流媒体源不起作用。
希望有所帮助。