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服务器(4):路由
Dec 18 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs中的异步编程知识点详解
Jan 17 NodeJs
Nodejs实现微信分账的示例代码
Jan 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
调频问题解答
2021/03/01 无线电
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
如何使用php实现评委评分器
2015/07/31 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
用javascript实现画板的代码
2007/09/05 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
javascript的几种写法总结
2016/09/30 Javascript
微信小程序开发探究
2016/12/27 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
Vant picker 多级联动操作
2020/11/02 Javascript
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
苹果美国官方商城:Apple美国
2016/08/24 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
关于毕业的广播稿
2014/01/10 职场文书
创业大赛策划书
2014/03/01 职场文书
人民调解协议书范本
2014/10/11 职场文书
联村联户简报
2015/07/21 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
分享Python异步爬取知乎热榜
2022/04/12 Python
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers