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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
Nodejs异步回调的优雅处理方法
Sep 25 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 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文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
深入解析php之apc
2013/05/15 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
JavaScript类的写法
2016/09/17 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
import的本质解析
2017/10/30 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
Python之变量类型和if判断方式
2020/05/05 Python
python实现简单猜单词游戏
2020/12/24 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
建筑安全标语
2014/06/07 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
公司职员入党自传书
2015/06/26 职场文书
房产遗嘱范本
2015/08/06 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android