javascript - 流式视频文件仍在下载 NodeJS
问题描述
我想流式传输mp4 视频文件,而它仍在后端下载。就像一些torrent客户端一样,torrent 仍在下载,但您已经可以开始观看视频了。
目前我有一些工作使用ranges
和fs.createReadStream
var stat = fs.statSync('/path/to/file.mp4'); // this file gets downloaded when requested
var total = stat.size;
console.log(prettyBytes(total));
if (request.headers.range) {
var range = request.headers.range;
var parts = range.replace(/bytes=/, "").split("-");
var partialstart = parts[0];
var partialend = parts[1];
var start = parseInt(partialstart, 10);
var end = partialend ? parseInt(partialend, 10) : total-1;
var chunksize = (end-start)+1;
var file = fs.createReadStream(path, {start: start, end: end});
resource.writeHead(206, { 'Content-Range': 'bytes ' + start + '-' + end + '/' + total, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize, 'Content-Type': 'video/mp4' });
file.pipe(resource);
}
else {
resource.writeHead(200, { 'Content-Length': total, 'Content-Type': 'video/mp4' });
fs.createReadStream(path).pipe(resource);
}
这目前正在工作,可以在浏览器中播放视频。但是,一旦我开始在HTML5 视频播放器中搜索,播放器就会跳回00:00
并重新开始。几分钟后视频也会停止,因为该部分是在视频开始时下载的。
当我重新加载浏览器时,mp4
文件已经下载了更多,现在我可以进一步寻找,但最终它再次失败并从 开始00:00
,即使视频已完全下载。
我偶然发现了这个包node-growth-file,这似乎是我正在寻找的。但是这个包裹似乎被它的主人遗弃了。有替代方案吗?
这甚至可以使用NodeJS
吗?
解决方案
推荐阅读
- python - 提取的 Mel 谱的最后一维是 4
- javascript - 初始化后添加更多图像时,React-slick 滑块会失真
- c - 您建议使用哪种方法在 Linux 中读取多播流?
- php - 在购物车中保存自定义价格单选按钮值并将其显示在购物车页面 Woocommerce
- node.js - 什么图像创建器画布与heroku一起使用来动态创建png?
- windows - 在Windows批处理中回答多个输入提示
- routes - NUXT JS 多动态参数
- python - 如何根据 pandas-python 中带有空格的图像拆分列中的值
- c++ - 创建异构顶点数据数组的便携式方法
- python - 如何在 tkinter 窗口上的图像上显示带有线条的图像?