【问题标题】:playing a mp3 link as a file with javascript使用 javascript 将 mp3 链接作为文件播放
【发布时间】:2014-05-13 11:07:52
【问题描述】:

我正在尝试从 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。因为当我将链接粘贴到我的网络浏览器中时,链接会从 SoundCloud 重定向到带有访问代码和签名等的 mp3 文件,然后我可以看到该文件并播放它。上面的链接会立即重定向到 http://soundcloud.vo.llnwd.net/PEPEnVEvnxwb.128.mp3?AWSAccessKeyId=AKIAJNIAGLK7XA7YZSNQ&Expires=1323978179&Signature=yxVIOjsdOiwhlLOtCnk3aI1YN4M%3D&e=1298204179&h=7103a8645083f828f21e6d41aa0b96b5

之类的链接

所以,简而言之,我无法通过链接播放 mp3 文件,但我可以在服务器上播放它。 你有解决这个问题的方法吗?

谢谢

【问题讨论】:

  • 我不知道 SoundJS 是如何工作的,但我的猜测是它期望接收数据,但正如您所观察到的,您使用的 soundclound 链接会进行重定向而不是直接返回歌曲,所以该方法不是接收数据,而是从服务器获取重定向响应...

标签: javascript file audio mp3


【解决方案1】:

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

目前,SoundJS 仅处理加载文件(Underground.mp3),它不能处理重定向或代理或任何不具有音乐文件类型(.mp3、.ogg 等)并返回可加载文件的内容。

第二个问题是 SoundJS 不处理流文件,所以流源不起作用。

希望对您有所帮助。

【讨论】:

  • 啊,谢谢。看来我必须找到另一种可视化流的方法。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多