使用javascript将mp3链接作为文件播放

使用javascript将mp3链接作为文件播放,javascript,file,audio,mp3,Javascript,File,Audio,Mp3,我正在尝试从SoundCloud获取一个mp3文件,并将该文件与SoundJS(来自CreateJS)一起使用,以制作一个音乐可视化工具。但有一个问题。当我从SoundCloud将文件路径分配给stream mp3链接时,音乐没有加载,代码卡在createjs.Sound.registerSound(src);//注册声音,默认情况下预加载。但当我在服务器上为它分配一个文件时,它就工作了 这是我得到的错误: [Error] TypeError: 'undefined' is not an obj

我正在尝试从SoundCloud获取一个mp3文件,并将该文件与SoundJS(来自CreateJS)一起使用,以制作一个音乐可视化工具。但有一个问题。当我从SoundCloud将文件路径分配给stream mp3链接时,音乐没有加载,代码卡在
createjs.Sound.registerSound(src);//注册声音,默认情况下预加载
。但当我在服务器上为它分配一个文件时,它就工作了

这是我得到的错误:

[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';    
我输入好的曲目id和客户id。因为当我将链接粘贴到我的webbrowser中时,链接会重定向到SoundCloud中的mp3文件,并带有访问代码和签名等,然后我可以看到该文件并播放它。上面的链接会立即重定向到类似的链接

因此,简而言之,我不能通过链接播放mp3文件,但我可以在服务器上播放。 你有解决这个问题的办法吗


谢谢

我从下一个方面看到了解决方案:

将您重定向到
.mp3
文件的SoundCloud服务器并不像您想象的那么愚蠢。它从您的请求中读取标题,并决定是否允许您听音乐。此外,重定向也可能有困难。 因此,您应该尝试的第一件事是编写一个代理。 用PHP编写的简单代理应该可以正常工作。或者,您也可以使用Node.js实现此目的。
它必须做的唯一一件事是为您的请求设置正确的头,如果重定向有问题,则创建直接链接作为对该代理的响应。

此方法有两个问题将阻止其工作

目前,SoundJS仅处理加载文件(Underground.mp3),它无法处理重定向或代理或任何既没有音乐文件类型(.mp3、.ogg等)又返回可加载文件的内容

第二个问题是SoundJS不处理流文件,因此流源无法工作


希望这能有所帮助。

我不知道SoundJS是如何工作的,但我猜它希望接收数据,但正如您所观察到的,您使用的soundclound链接进行重定向,而不是直接返回歌曲,因此,该方法不是接收数据,而是从服务器获得重定向响应……啊,谢谢。似乎我必须找到另一种方式来可视化这个流。