无法在node.js中管道mp4文件

时间:2014-09-27 22:48:22

标签: 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 个答案:

答案 0 :(得分:1)

我看到你的代码中有两个问题

  1. Streams是一次性使用对象,因此一旦您获取一个视频,第二个请求将失败,因为该流已经关闭。您的rs = fs.createReadStream('./Practice/Jumanji.mp4');行应该在回调中。
  2. 在这种情况下,您错误的原因可能是res.end();。在您的管道有时间撰写视频之前,这会立即关闭res,因此您基本上是"Send this stream"紧跟着"Send nothing"。您应该删除该行,因为管道将在写入所有数据时自动关闭res
  3. 所有这些都说,你可能想要考虑很多错误处理逻辑,你可能想要考虑这个错误处理逻辑。