簡體   English   中英

使用javascript播放mp3鏈接作為文件

[英]playing a mp3 link as a file with javascript

我正在嘗試從SoundCloud中獲取mp3文件,並將其與SoundJS(來自CreateJS)一起使用,以制作音樂可視化程序。 但是有一個問題。 當我將文件路徑分配給來自SoundCloud的流mp3鏈接時,音樂不會加載,代碼會卡在createjs.Sound.registerSound(src); // register sound, which preloads by default 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。 因為當我將鏈接粘貼到Web瀏覽器中時,該鏈接會使用訪問代碼和簽名等從SoundCloud重定向到mp3文件,然后我可以看到並播放該文件。 上面的鏈接會立即重定向到類似http://soundcloud.vo.llnwd.net/PEPEnVEvnxwb.128.mp3?AWSAccessKeyId=AKIAJNIAGLK7XA7YZSNQ&Expires=1323978179&Signature=yxVIOjsdOiwhlLOtCnk3aI1YN4M4b3204e6b3298e6b3e1e4b4e0b0b0e0b0e0f0f0b0e0f0b0e0f0b0e0b0e0b0e0b0b0e2e0e0b0e8b0e0b0e2e0b0e0b0e0b0e0b0e2b0b0b0b0b0b0b0b0b0b0b&0f;1323e

簡而言之,我無法通過鏈接播放mp3文件,但可以在服務器上播放該文件。 您對此問題有解決方案嗎?

謝謝

我以另一種方式看到解決方案:

將您重定向到.mp3文件的SoundCloud服務器並不像您想象的那樣愚蠢。 它從您的請求中讀取標頭,並做出允許您聽音樂或不聽音樂的決定。 重定向也可能會遇到困難。 因此,您應該嘗試的第一件事是編寫代理。 用PHP編寫的簡單代理應該可以正常工作。 或者,您可以為此使用Node.js。 它唯一要做的就是為您的請求設置正確的標頭,如果重定向存在問題,則直接建立鏈接作為對該代理的響應。

這種方法有兩個問題,將阻止其工作。

目前,SoundJS僅處理加載文件(Underground.mp3),無法處理重定向或代理或不具有音樂文件類型(.mp3,.ogg等)的任何文件,並返回可加載文件。

第二個問題是SoundJS無法處理流文件,因此流源將不起作用。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM