好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

websocket探索其语音、图片的能力_html/css_WEB-ITnose

websocket探索其语音、图片的能力

data.setUint32(offset, dataLength, true); offset += 4;

// 写入采样数据

if (sampleBits === 8) {

for (var i = 0; i

var s = Math.max(-1, Math.min(1, bytes[i]));

var val = s

val = parseInt(255 / (65535 / (val + 32768)));

data.setInt8(offset, val, true);

}

} else {

for (var i = 0; i

var s = Math.max(-1, Math.min(1, bytes[i]));

data.setInt16(offset, s

}

}

return new Blob([data], { type: 'audio/wav' });

}

};

this.start = function () {

audioInput.connect(recorder);

recorder.connect(context.destination);

}

this.stop = function () {

recorder.disconnect();

}

this.getBlob = function () {

return audioData.encodeWAV();

}

this.clear = function() {

audioData.clear();

}

recorder.onaudioprocess = function (e) {

audioData.input(e.inputBuffer.getChannelData(0));

}

};

SRecorder.get = function (callback) {

if (callback) {

if (navigator.getUserMedia) {

navigator.getUserMedia(

{ audio: true },

function (stream) {

var rec = new SRecorder(stream);

callback(rec);

})

}

}

}

function receive(e) {

audio.src = window.URL.createObjectURL(e);

}

注意:按住a键说话,放开a键发送

自己有尝试不按键实时对讲,通过setInterval发送,但发现杂音有点重,效果不好,这个需要encodeWAV再一层的封装,多去除环境杂音的功能,自己选择了更加简便的按键说话的模式

这篇文章里首先展望了websocket的未来,然后按照规范我们自己尝试解析和生成数据帧,对websocket有了更深一步的了解

最后通过两个demo看到了websocket的潜力,关于语音聊天室的demo涉及的较广,没有接触过AudioContext对象的同学最好先了解下AudioContext

文章到这里就结束啦~有什么想法和问题欢迎大家提出来一起讨论探索~

感谢作者: TAT.vorshen

原文来自: http://www.alloyteam.com/2015/12/websockets-ability-to-explore-it-with-voice-pictures/

查看更多关于websocket探索其语音、图片的能力_html/css_WEB-ITnose的详细内容...

  阅读:44次