2016-11-24 5 views
3

私はソケット接続を作成し、バイナリストリームデータをサーバ側とサーバ側に送信する接続を使用しています。このデータを使用してバイナリデータを取得しています。ファイルに保存してサーバーに保存します。バイナリデータを取得してビデオファイルに変換することができなくなりました。達成するのを助けてください。ソケット接続から収集されたバイナリデータからビデオファイルを生成

var server = http.createServer(function(request, response) { 
    //Creating websocket server 
}); 
server.listen(1337, function() { }); // listen to 1337 port 

// create the server 
wsServer = new WebSocketServer({ 
    httpServer: server 
}); 

// WebSocket server 
wsServer.on('request', function(request) { 
    var connection = request.accept(null, request.origin); 

    // all messages from client will receive here. 
    connection.on('message', function(message) { 
     if (message.type === 'utf8') { 

     }else if (message.type === 'binary') { 
      //here i will get the binary data not want to create the video file using this 
     } 
    }); 

    connection.on('close', function(connection) { 


    }); 

}) 

クライアント側:

window.WebSocket = window.WebSocket || window.MozWebSocket; 
    var connection = new WebSocket('ws://localhost:1337'); 
    connection.binaryType = 'arraybuffer'; 
    var options = { 
     mimeType: 'video/webm;codecs=vp9' 
    }; 

    mediaRecorder = new MediaRecorder(MediaStream, options); 
    mediaRecorder.ondataavailable = function(event) { 
     if (event.data.size > 0) { 
     recordedChunks.push(event.data); 
     connection.onopen = function() { 
      var byteArray = new Uint8Array(event.data); 
      connection.send(byteArray.buffer); 
     }; 
     } 
    }; 
+0

は、ビデオファイルからバイナリストリームですか? – Sven

+0

いいえ私はchrome extension chrome.tabCapture.capture –

答えて

1

私はそれを達成したjavascriptの

サーバー側のコードソケットサーバーを作成するのNode.jsを使用して、サーバー側メートルに及び、クライアント側から

サーバー上でビデオファイルを正常に作成する私は、recordRTC APIを使用してビデオストリームをdataurlに変換し、socket.ioを使用してサーバーに送信し、サーバーでdataurlをbase6に変換しました4ファイルに書き出します。

ここに私のクライアント側のコードです。

socketio = io("ws://192.168.0.42:1337"); 
    recordVideo = RecordRTC(MediaStream, {type: 'video'}); 
    recordVideo.startRecording(); 
    onStopRecording(); 
    function onStopRecording(){ 
     recordVideo.stopRecording(function() { 
     recordVideo.getDataURL(function(videoDataURL) { 
        var d = new Date(); 
        var files = { 
         video: { 
          type: recordVideo.getBlob().type || 'video/webm', 
          dataURL: videoDataURL, 
          time : d.getTime() 
         } 
        }; 
        socketio.emit('message', files); 
     }) 
     }); 
    } 

と、サーバー側から:

var server = http.createServer(function(request, response) { 
    //Creating websocket server 
}); 
server.listen(1337, function() { }); // listen to 1337 port 


var wIoSocket = io.listen(server); 
wIoSocket.sockets.on('connection', function (socket) { 
    socket.on('message', function (data) { 
     if (data.video) { 
      writeToDisk(data.video.dataURL, data.video.time+'.webm'); 
     } 
    }); 
}); 


function writeToDisk(dataURL, fileName) { 
    var dataURL = dataURL.split(',').pop(); 
    var fileBuffer = new Buffer(dataURL, 'base64'); 
    fs.writeFileSync(fileName, fileBuffer); 
} 
+0

を使用してユーザーアクションを記録していますが、この方法ではビデオストリームを送信するためにビデオ録画を停止する必要があります。私は録画中にビデオストリームを送信したい。 –

関連する問題