使用节点js流式传输多个文件

时间:2017-10-29 11:56:22

标签: javascript node.js express

我正在尝试使用expressmediaserver发送多个视频文件。 有没有办法检查文件是否已完成流式传输,然后将视频更改为下一个? 以下是快递请求。 因此,为了澄清我可以使用以下请求发送视频,但我不知道如何在完成流式传输后更改文件,我读到mediaserver非常适合发送媒体文件,但没有任何文档,所以我无法找到方法或描述如何做到这一点。

const express = require('express');
const app = express();
const ms = require('mediaserver');

app.get('/video', function(req, res){
   const filename = 'sample1.mp4'
   const filename1 = 'sample2.mp4'
   ms.pipe(req, res, assetsPath + filename);
   console.log ('[streaming video]: ' + filename);
});

app.listen(3000, function () {
   console.log('Listening on port 3000...');
});

1 个答案:

答案 0 :(得分:0)

动态托管我可以找到的文件的最佳方法是使用通用的“流式传输”文件。路由然后将文件作为查询传递:

const express = require('express'); 
const app = express();
const ms = require('fs'); 

app.get('/stream', function(req,res){
    var fileId = req.query.id,
    file = __dirname + fileId;
    fs.exists(file,function(exists){
        if(exists) {
            console.log("[Streaming:] %s", file);
            var rstream = fs.createReadStream(file); 
            rstream.pipe(res);
        } else {
            console.log("[ERROR Streaming:] %s", file);
            res.send("Playback 404");
            res.end();
        }
    });
}); 

app.listen(3000, function () {
    console.log('Listening on port 3000...');
});

然后,您可以查看目录并创建一个html字符串以发送到该页面,创建一个按钮,在点击时流式传输文件:

var serverAddress = "http://localhost:3000"
var file = "sample.mp4"
stream = "<a href='" +serverAddress+ "/stream?id=" + file + "' target='_blank'><button class='btn btn-success'>Stream</button></a>";
res.send (stream)