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命令行参数处理模块commander使用实例
Sep 17 NodeJs
初始Nodejs
Nov 08 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 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
239军机修复记
2021/03/02 无线电
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
PHP多文件上传类实例
2015/03/07 PHP
PHP在线书签系统分享
2016/01/04 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
Javascript中setTimeOut和setInterval的定时器用法
2015/06/12 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
司仪主持词两篇
2014/03/22 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
公务员考察材料范文
2014/12/23 职场文书
2015年国庆节新闻稿
2015/07/18 职场文书
2016猴年春节问候语
2015/11/11 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
整理Python中常用的conda命令操作
2021/06/15 Python