qaapio-reecord-mp3
Version:
A convenient and powerful React hook and component for audio recording with customizable options and audio levels.
43 lines • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAudioLevels = void 0;
var react_1 = require("react");
var useAudioLevels = function (isRecording) {
var _a = (0, react_1.useState)(0), audioLevel = _a[0], setAudioLevel = _a[1];
(0, react_1.useEffect)(function () {
var audioContext;
var analyser;
var source;
if (isRecording) {
var handleSuccess = function (stream) {
audioContext = new AudioContext();
analyser = audioContext.createAnalyser();
source = audioContext.createMediaStreamSource(stream);
analyser.smoothingTimeConstant = 0.8;
analyser.fftSize = 1024;
source.connect(analyser);
var getAudioLevel = function () {
var dataArray = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(dataArray);
var sum = 0;
for (var i = 0; i < dataArray.length; i++) {
sum += dataArray[i];
}
var average = sum / dataArray.length;
setAudioLevel(average);
requestAnimationFrame(getAudioLevel);
};
getAudioLevel();
};
navigator.mediaDevices.getUserMedia({ audio: true }).then(handleSuccess);
return function () {
source === null || source === void 0 ? void 0 : source.disconnect();
analyser === null || analyser === void 0 ? void 0 : analyser.disconnect();
audioContext === null || audioContext === void 0 ? void 0 : audioContext.close();
};
}
}, [isRecording]);
return audioLevel;
};
exports.useAudioLevels = useAudioLevels;
//# sourceMappingURL=useAudioLevels.js.map