2014-09-27 55 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