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 相关文章推荐
14款NodeJS Web框架推荐
Jul 11 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs使用express获取get和post传值及session验证的方法
Nov 09 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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实现通过URL提取根域名
2016/03/31 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
2016/12/09 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
python中的列表推导浅析
2014/04/26 Python
在python中的socket模块使用代理实例
2014/05/29 Python
使用python实现接口的方法
2017/07/07 Python
python爬虫基本知识
2018/03/05 Python
python数据挖掘需要学的内容
2019/06/23 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
Notino罗马尼亚网站:购买香水和化妆品
2019/07/20 全球购物
Collection和Collections的区别
2016/05/02 面试题
中学生操行评语大全
2014/04/24 职场文书
通用员工手册范本
2015/05/14 职场文书
投诉书范文
2015/07/02 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
初一军训感言
2015/08/01 职场文书
病假条格式范文
2015/08/17 职场文书
为什么不建议在go项目中使用init()
2021/04/12 Golang
Go标准容器之Ring的使用说明
2021/05/05 Golang
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技