nodejsは大きいファイル(オンライン動画)の読み込みを実現します。
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方式により、ビデオストリームを取得し、その後、閉じられたイベントをバインドする。ストリームが最後まで読み取られると、reponse要求を終了し、最後にpipe方式により、小さいサイズの読み取りを行う。ここのhead情報はContent-Length属性を追加できません。セグメント読み取りが必要なので、この属性を追加すると、ブラウザは要求が終了したと判断して要求を閉じます。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。