nodejs實現(xiàn)大文件(在線視頻)的讀取
nodejs進(jìn)行視頻讀取時不能像讀取圖片之類的一次性讀取,而是必須讀取一部分返回一部分,這樣客戶端的播放才會邊緩沖邊播放,而不必等待全部緩沖完再播放。
老規(guī)矩,直接貼代碼講解:
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方法,拿到視頻流,然后綁定關(guān)閉事件:當(dāng)流讀取到結(jié)尾的時候結(jié)束response請求,最后通過pipe方法進(jìn)行小塊小塊的讀取。這里的head信息不能添加Content-Length屬性,因為必須分段讀取,如果加了這個屬性,瀏覽器就會以為請求結(jié)束了從而關(guān)閉請求。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解NodeJS Https HSM雙向認(rèn)證實現(xiàn)
這篇文章主要介紹了詳解NodeJS Https HSM雙向認(rèn)證實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
一文教你學(xué)會Nodejs中puppeteer的簡單使用
Puppeteer是一個控制headless Chrome的Node.js API ,是一個 Node.js庫,在瀏覽器中手動完成的大多數(shù)事情都可以通過使用 Puppeteer完成,本文主要介紹了Puppeteer的簡單使用,希望對大家有所幫助2024-01-01
詳解nodejs微信公眾號開發(fā)——3.封裝消息響應(yīng)模塊
上一篇文章:nodejs微信公眾號開發(fā)(2)自動回復(fù),實現(xiàn)了簡單的關(guān)注回復(fù)。采用拼接字符串的形式,并不是很方便,這里我們將其封裝承接口。2017-04-04
nodejs操作mongodb的填刪改查模塊的制作及引入實例
下面小編就為大家分享一篇nodejs操作mongodb的填刪改查模塊的制作及引入實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01

