2012-06-21 84 views
0

我有一個應用程序,它使用Node.JS流式傳輸MP3。目前這是通過以下郵政路線完成...使用Node.JS消費流創建

app.post('/item/listen',routes.streamFile) 
... 
exports.streamFile = function(req, res){ 
    console.log("The name is "+ req.param('name')) 
    playlistProvider.streamFile(res, req.param('name')) 
} 
... 
PlaylistProvider.prototype.streamFile = function(res, filename){ 
    res.contentType("audio/mpeg3"); 
    var readstream = gfs.createReadStream(filename, { 
     "content_type": "audio/mpeg3", 
     "metadata":{ 
     "author": "Jackie" 
     }, 
     "chunk_size": 1024*4 }); 
    console.log("!") 
    readstream.pipe(res); 
} 

有沒有人可以幫助我在客戶端閱讀此?我想使用JPlayer或HTML5,但我可以使用其他選項。

回答

-1

我假設你沒有打擾訪問their site因爲如果你這樣做了,你會看到幾個使用HTML5/JPlayer來實現這個功能的例子。以下是他們的在線開發者文檔提供一個最基本的例子:因此,這裏真正的問題是,我們在「請求文件」,因此這將是一個GET請求更好

<html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script> <script type="text/javascript" src="/js/jquery.jplayer.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#jquery_jplayer_1").jPlayer({ ready: function() { $(this).jPlayer("setMedia", { mp3: "http://www.jplayer.org/audio/mp3/Miaow-snip-Stirring-of-a-fool.mp3" }).jPlayer("play"); var click = document.ontouchstart === undefined ? 'click' : 'touchstart'; var kickoff = function() { $("#jquery_jplayer_1").jPlayer("play"); document.documentElement.removeEventListener(click, kickoff, true); }; document.documentElement.addEventListener(click, kickoff, true); }, loop: true, swfPath: "/js" }); }); </script> </head> <body> <div id="jquery_jplayer_1"></div> </body> </html>

+0

沒有具體的例子嗎?我很抱歉,我認爲你可能誤解了這一點,我沒有嘗試使用單個文件,這是一個只能通過發佈請求訪問的流。現在,也許我應該讀更多,我會更樂意接受他們的網站上的具體位置,但我看了,找不到任何東西。 – Jackie

+0

這個社區在這裏提供幫助,假設你自己已經完成了一些腿部工作。例如,如果您從其中的一個例子中提供了代碼並且有問題,我會更樂於幫助您。 –

+0

你有什麼樣的例子讓我仿效?我找不到這就是爲什麼我在這裏發佈。什麼是不必要的敵對性格? – Jackie

0

。爲了做到這一點,我使用了表達式「RESTful」語法'/ item/listen /:name'。然後,您可以按照上一張海報提供的鏈接中指定的方式使用JPlayer。

+0

嘿,你能指定你如何解決這個問題嗎?我在後端有jPlayer和音頻文件。我想創建真正的流並將其饋送給jPlayer。用這個任務在過去的兩個星期裏用我的頭撞牆 –