multipart/x-mixed-replaceデータをブラウザーにストリーミングするnodejsを使用して小さなアプリケーションを作成します。
このデータは画像データを使用して作成されますが、画像データは時間の経過とともに変化する可能性があるため、ブラウザではビデオのように見えます。画像データはウェブカメラから作成されるため、ブラウザではライブストリーミングのように見えます。
しかし、パフォーマンスはあまり良くありません。
私は他のいくつかのアプローチを試しました:-最初に:socket.ioを使用して画像をブラウザにプッシュします。ここでは画像からbase64データを使用し(このデータをプッシュします)、ブラウザで画像を再作成します(jpeg):正常に動作します。ただし、クライアントは1つまたは2つだけです。_ 2番目:ブラウザからnodejsサーバーへのポーリングを使用します。これは私が好きではありません。
これがコードです:(nodejsサーバーのコードの一部)私はexpressを使用してhttpサーバーを作成します:
app.get('/videoStream',function(req,response){
response.writeHead(200,{
'Content-Type': 'multipart/x-mixed-replace;boundary="' + boundary + '"',
'Connection': 'keep-alive',
'Expires': 'Fri, 01 Jan 1990 00:00:00 GMT',
'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate',
'Pragma': 'no-cache'
});
response.write('--'+boundary+'\n');
events.addListener('imagen_recibida',function(){
fs.readFile(__dirname + '/image.jpeg',function(err,data){
if(err) return send404(response);
response.write('Content-Type: image/jpeg\n Content-Length: '+data.length+'\n\n');
response.write(data);
response.write('\n--'+boundary+'\n');
});
});
イベント「imagen_recibida」が発生すると、ディスクからイメージを読み取り、ブラウザにデータを書き込みます。
したがって、2つの質問:
これのパフォーマンスを改善するためのアプローチはありますか?(画像をディスクに書き込んでから、ブラウザに送信するために読み取るのは良いトリックとは思えません)
パフォーマンスを向上させるためにこれを別の形式にエンコードする方法はありますか?
どうもありがとう。
PD:RPC呼び出しを介して別の関数の別のプロセスから画像データを受信するため、画像はディスクに書き込まれ、次に読み取られてブラウザーに送信されます。