javascript - Streaming microphone through sockets using socket IO and Node JS -


i making application want user use mic (on phone) , able talk each other in game lobby. however, has proven more difficult.

i using node js socket io , socket io stream

on client using audio api take microphones input ( not worried because going make native ios app)

    navigator.getusermedia = ( navigator.getusermedia ||                      navigator.webkitgetusermedia ||                      navigator.mozgetusermedia ||                      navigator.msgetusermedia);      if (navigator.getusermedia) {           navigator.getusermedia (             // constraints           {             video: false,             audio: true           },       function(localmediastream) {         var video = document.queryselector('audio');         video.src = window.url.createobjecturl(localmediastream);        lcm = localmediastream;        var audiocontext = window.audiocontext;        var context = new audiocontext();        var audioinput = context.createmediastreamsource(localmediastream);        var buffersize = 2048;       // create javascript node       var recorder = context.createscriptprocessor(buffersize, 1, 1);       // specify processing function       recorder.onaudioprocess = recorderprocess;       // connect stream our recorder       audioinput.connect(recorder);       // connect our recorder previous destination       recorder.connect(context.destination);       },    // errorcallback   function(err) {      console.log("the following error occured: " + err);      $("video").remove();      alert("@#");           }         );             } else {                  console.log("getusermedia not supported");             }          function recorderprocess(e) {             var left = e.inputbuffer.getchanneldata(0);             window.stream.write(convertfloat32toint16(left));            //var f = $("#aud").attr("src");            var src = window.url.createobjecturl(lcm);             ss(socket).emit('file', src, {size: src.size});            ss.createblobreadstream(src).pipe(window.stream);           //ss.createreadstream(f).pipe(widnow.stream);              }          function convertfloat32toint16(buffer)        {             l = buffer.length;             buf = new int16array(l);             while (l--) {                buf[l] = math.min(1, buffer[l])*0x7fff;               }                  return buf.buffer;          }                 });           ss(socket).on('back', function(stream, data) {                  //console.log(stream);                  var video = document.queryselector('audio');               video.src = window.url.createobjecturl(stream);               console.log("getting mic data");             }); 

i can listen self speak on microphone. using stream socket create blob upload server...

        index.ss(socket).on('file', function(stream, data) {                 console.log("getting stream");                var filename = index.path.basename(data.name);              //var myfs = index.fs.createwritestream(filename);              var filewriter = new index.wav.filewriter('demo.wav', {                 channels: 1,                 samplerate: 48000,                 bitdepth: 16              });           var streams = index.ss.createstream();           streams.pipe(filewriter);          index.ss(socket).emit('back', filewriter, {size: filewriter.size});           }); 

i cannot stream write file or temporary buffer, , stream client can play or "stream" audio real time. after while server crashes saying pipe not writable.

has else encountered this?


Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -