[英]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.