2014-09-27 56 views
0

我想管我的根目錄中的MP4文件,但我無法讓它工作,它開始緩衝流,但從來沒有播放文件。無法在node.js管道mp4文件

這裏是我的代碼

var http = require('http'), 
    server = http.createServer(), 
    fs = require('fs'), 
    rs = fs.createReadStream('./Practice/Jumanji.mp4'); 
server.on('request', function(req, res) { 
    res.writeHead(200, { 
     'Content-Type': 'video/mp4' 
    }); 
    rs.pipe(res); 
    res.end(); 
}); 
server.listen(4000); 

電影嘗試加載,但從來不會。

回答

1

你在你的代碼的兩個問題,我看到

  1. 流是一次性使用的對象,所以一旦你取一個視頻,因爲流已經關閉第二個請求將失敗。你的rs = fs.createReadStream('./Practice/Jumanji.mp4');行應該在回調中。
  2. 在這種情況下可能導致錯誤的原因是res.end();。在你的管道有時間寫視頻之前,這將立即關閉res,所以你基本上在說"Send this stream",緊接着是"Send nothing"。您應該刪除該行,因爲在寫入所有數據時,管道將自動關閉res

所有這一切說,有很多錯誤處理邏輯,您的示例丟失,你可能要考慮。

+0

非常感謝我現在看到明顯的錯誤,我剛剛開始node.js,它會立刻變得更好。 – Mcs 2014-09-27 23:06:30