nodejs实现大文件(在线视频)的读取


Posted in NodeJs onOctober 16, 2020

nodejs进行视频读取时不能像读取图片之类的一次性读取,而是必须读取一部分返回一部分,这样客户端的播放才会边缓冲边播放,而不必等待全部缓冲完再播放。

老规矩,直接贴代码讲解:

var fs = require('fs'); 

function readBigFileEntry(filename, response) { 
path.exists(filename, function(exists) { 
if (!filename || !exists) { 
response.writeHead(404); 
response.end(); 
return; 
} 

var readStream = fs.ReadStream(filename); 

var contentType = 'none'; 
var ext = path.extname(filename); 
switch (ext) { 
case ".flv": 
contentType = "video/flv"; 
break; 
} 

response.writeHead(200, { 
'Content-Type' : contentType, 
'Accept-Ranges' : 'bytes', 
'Server' : 'Microsoft-IIS/7.5', 
'X-Powered-By' : 'ASP.NET' 
}); 



readStream.on('close', function() { 
response.end(); 
console.log("Stream finished."); 
}); 
readStream.pipe(response); 
}); 
}

通过fs模块的ReadStream方法,拿到视频流,然后绑定关闭事件:当流读取到结尾的时候结束response请求,最后通过pipe方法进行小块小块的读取。这里的head信息不能添加Content-Length属性,因为必须分段读取,如果加了这个属性,浏览器就会以为请求结束了从而关闭请求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs实用示例 缩址还原
Dec 28 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
NodeJS仿WebApi路由示例
Feb 28 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
详解Nodejs内存治理
May 13 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
Nodejs实现WebSocket代码实例
May 19 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 #NodeJs
NodeJs实现定时任务的示例代码
Dec 05 #NodeJs
windows系统下更新nodejs版本的方案
Nov 24 #NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 #NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 #NodeJs
NodeJS实现视频转码的示例代码
Nov 18 #NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 #NodeJs
You might like
php实现读取手机客户端浏览器的类
2015/01/09 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php实现 master-worker 守护多进程模式的实例代码
2019/07/20 PHP
Android中的jQuery:AQuery简介
2014/05/06 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
Vue.use源码分析
2017/04/22 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
Python和Go语言的区别总结
2019/02/20 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
医学院学生求职简历的自我评价
2013/10/24 职场文书
班长演讲稿范文
2014/04/24 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
男人帮观后感
2015/06/18 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
导游词之峨眉山
2019/12/16 职场文书