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

时间:2014-05-13 11:07:52

标签: javascript file audio mp3

我正在尝试从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文件,但我可以在服务器上播放它。 你有解决这个问题的方法吗?

由于

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这种方法有两个问题会阻止它工作。

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

第二个问题是SoundJS不处理流文件,因此流媒体源不起作用。

希望有所帮助。