我需要的是能够将服务器本地文件上的视频发送到客户端。我无法创建静态“视频”文件夹,因为这些视频只是暂时可用,这意味着我将拥有动态视频。
那么如何从服务器文件中检索可播放的 .m4v 视频文件(如果我知道路径)并将其发送到 angular.io 客户端进行播放
这是一个简单的解决方案:
在服务器端:
app.get('/video', function(req, res) {
const path = 'assets/sample.m4v'
const stat = fs.statSync(path)
const fileSize = stat.size
const head = {
'Content-Length': fileSize,
'Content-Type': 'video/mp4',
}
res.writeHead(200, head)
fs.createReadStream(path).pipe(res)
})
在客户端(html):
<video id="videoPlayer" controls>
<source src="http://localhost:3000/video" type="video/mp4">
</video>
也许您应该设置不同的媒体类型,例如video/x-m4v而不是 video/mp4。
这对我来说已经足够了。MP4 具有对修剪(伪流)的本机支持。它非常适合通过流媒体在浏览器中观看视频。
const router = require('express').Router();
...
router.get('/video/:acckey', async (req, res, next)=>{
...
let full_path = await myAccessControl.auth(acckey);
...
if (fs.existsSync(full_path)) {
res.setHeader('Content-Type', 'video/mp4');
res.status(200).sendFile(full_path, function (err) {
if (err) {...} else {...}
});
}
}
在 HTML 中(简化):
<VIDEO controls src="domain.com/video/PSMAPKMDPAMDPSMPSD/">