JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://d.vidya.io/virtualclass/src/resampler.js"></script>
<script src="https://d.vidya.io/virtualclass/src/g711.js"></script>
Audio Test
See console.log and memory view in timeline.
JavaScript
var resampler = new Resampler(44100, 8000, 1, 4096);
if (!navigator.getUserMedia)
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia || navigator.msGetUserMedia;
if (navigator.getUserMedia){
navigator.getUserMedia({audio:true}, success, function(e) {
alert('Error capturing audio.');
});
} else alert('getUserMedia not supported in this browser.');
function success(e){
var audioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext;
var context = new audioContext();
context.createAnalyser();
var audioInput = context.createMediaStreamSource(e);
var bufferSize = 16384;
var audio = context.createScriptProcessor(bufferSize, 1, 1);
audio.onaudioprocess = recorderProcess.bind(audio);
audioInput.connect(audio);
audio.connect(context.destination);
}
recorderProcess = function (e) {
var left = e.inputBuffer.getChannelData(0);
var samples = resampler.resampler(left);
var leftSix = convertFloat32ToInt16(samples);
var send = G711.encode(leftSix, {
alaw: this.encMode == "alaw" ? true : false
});
console.log(send.length);
}
function convertFloat32ToInt16(buffer) {
l = buffer.length;
buf = new Int16Array(l);
while (l--) {
buf[l] = Math.min(1, buffer[l])*0x7FFF;
}
return buf;
}