我仍然是Node.js中的新手,如果我听起来语无伦次,我会试着弄清楚事情。
所以我已经阅读了一些关于流的初学者笔记,我现在正在测试它。 我在我想要在页面上显示的项目文件(public / images / videos / Seinfeld.S09E07.720p.WebRip.ReEnc-DeeJayAhmed.mkv)中获得了这些Seinfeld剧集(.mkv文件)。现在,简单的选择是将它放在我的ejs文件中的视频标签的'src'中。
但是,我想流式传输视频部分,以便它不必等待整个文件准备好显示该剧集。我以为我可以使用.createReadStream。但是,我不知道如何将准备好的小块视频数据传输到我的网页中,以便在我的视频播放器中显示它们。
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>
答案 0 :(得分:2)
您可以使用fetch()
,Response.getReader()
在客户端返回ReadableStream
和MediaSource
来读取服务器的响应流并附加一个或多个{{1}表示可以在ArrayBuffer
元素处呈现的一个或多个媒体资源的块,请参阅HTML5 audio streaming: precisely measure latency?。