显示页面上的videostream块(node.js)

在Node.js中,我还是个新手,如果我听起来语无伦次,试图弄清楚一些事情,请原谅。

所以我已经阅读了一些关于stream的初学者笔记,现在我正在testing它。 我在我的项目文件(公共/图像/video/ Seinfeld.S09E07.720p.WebRip.ReEnc-DeeJayAhmed.mkv)中获得了这些Seinfeld情节(.mkv文件),我想在页面上显示。 现在,简单的select就是把它放在我的ejs文件中的video标签的“src”中。

但是,我想stream式传输video部分,以便它不必等待整个文件准备好显示该情节。 我以为我可以使用.createReadStream为此。 但是,我不知道如何将那些准备好的video数据块传输到我的网页中,以便在video播放器中显示它们。

index.js服务器端

var express = require('express'); var router = express.Router(); var fs = require('fs'); /* GET home page. */ router.get('/', function(req, res, next) { var myReadStream = fs.createReadStream(__dirname + '/../images/videos/Seinfeld.S09E07.720p.WebRip.ReEnc-DeeJayAhmed.mkv'); myReadStream.on('data', function (chunk) { // no idea what to do from here }) res.render('index', { title: 'Express' }); }); module.exports = router; 

EJS文件

 <!DOCTYPE html> <html> <head> <title><%= title %></title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1><%= title %></h1> <video src="" type="video/mkv" autoplay controls></video> <p>Welcome to <%= title %></p> </body> </html> 

您可以使用fetch()Response.getReader() ,它在客户端返回一个ReadableStreamMediaSource来读取来自服务器的响应stream,并附加一个或多个表示一个或多个媒体资源块的ArrayBuffer ,这些资源可以在<video>元素,请参阅HTML5audiostream:精确测量延迟? 。