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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
Nodejs极简入门教程(二):定时器
Oct 25 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
smarty简单分页的实现方法
2014/10/27 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
让JavaScript的Alert弹出框失效的方法禁止弹出警告框
2014/09/03 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
python 实现归并排序算法
2012/06/05 Python
Python列表list数组array用法实例解析
2014/10/28 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python中的id()函数指的什么
2017/10/17 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
Python中的TCP socket写法示例
2018/05/11 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
python读取Excel实例详解
2018/08/17 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
工程师自我评价怎么写
2013/09/19 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
村长反四风问题个人对照检查材料
2014/09/21 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android