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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
NodeJs通过async/await处理异步的方法
Oct 09 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
在nodejs中创建child process的方法
Jan 26 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实现与ASP Banner组件相似的类
2006/10/09 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
ThinkPHP之R方法实例详解
2014/06/20 PHP
PHP中比较时间大小实例
2014/08/21 PHP
PHP可变函数学习小结
2015/11/29 PHP
php修改数组键名的方法示例
2017/04/15 PHP
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
python数据抓取3种方法总结
2021/02/07 Python
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
优秀毕业生事迹材料
2014/02/12 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书