diff --git a/index.js b/index.js index 26259e8..07889cf 100644 --- a/index.js +++ b/index.js @@ -142,15 +142,15 @@ aio.on('connection', function (socket) { record = pulse.createRecordStream({ channels: 2, rate: 44100, - format: 'S16LE', + format: 'F32LE', }); record.on('connection', function(){ record.on('data', function(chunk) { // Only send real audio data let arr = chunk.toJSON().data; - if (! arr.every(item => item === 0)) { + if (arr.length < 26456) { aio.sockets.to(id).emit('audio', chunk); - } + } }); }); } diff --git a/public/js/kclient.js b/public/js/kclient.js index 3855325..2836db4 100644 --- a/public/js/kclient.js +++ b/public/js/kclient.js @@ -80,8 +80,7 @@ function audio() { } function processAudio(data) { - let buf = new Uint16Array(data); - player.feed(buf); + player.feed(data); } socket.on('audio', processAudio); diff --git a/public/js/pcm-player.js b/public/js/pcm-player.js index cd2927a..7611a3d 100644 --- a/public/js/pcm-player.js +++ b/public/js/pcm-player.js @@ -1 +1 @@ -function PCMPlayer(t){this.init(t)}PCMPlayer.prototype.init=function(){this.option={encoding:"16bitInt",channels:2,sampleRate:44100},this.samples=new Float32Array,this.maxValue=32768,this.typedArray=Int16Array,this.audioCtx=new(window.AudioContext||window.webkitAudioContext),this.audioCtx.resume(),this.gainNode=this.audioCtx.createGain(),this.gainNode.gain.value=1,this.gainNode.connect(this.audioCtx.destination),this.startTime=this.audioCtx.currentTime},PCMPlayer.prototype.feed=function(t){t=this.getFormatedValue(t);var e=new Float32Array(this.samples.length+t.length);if(e.set(this.samples,0),e.set(t,this.samples.length),this.samples=e,this.samples.length){var i,s,a,n,o,h=this.audioCtx.createBufferSource(),r=this.samples.length/this.option.channels,l=this.audioCtx.createBuffer(this.option.channels,r,this.option.sampleRate);for(s=0;s