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入门详解(多篇文章结合)
Mar 07 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 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 中文处理技巧
2010/04/25 PHP
PHP经典面试题集锦
2015/03/19 PHP
php socket通信简单实现
2016/11/18 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
xtree.js 代码
2007/03/13 Javascript
JavaScript 中的replace方法说明
2007/04/13 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
javascript的内存管理详解
2013/08/07 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
Javascript继承机制详解
2017/05/30 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
浅谈对yield的初步理解
2017/05/29 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
python语言基本语句用法总结
2019/06/11 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
python包的导入方式总结
2021/03/02 Python
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
个人自我评价分享
2013/12/20 职场文书
法人代表委托书
2014/04/04 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
公司酒会主持词
2015/07/02 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书