qaapio-reecord-mp3
Version:
A convenient and powerful React hook and component for audio recording with customizable options and audio levels.
39 lines • 1.75 kB
JavaScript
import { useEffect, useState } from 'react';
export var useAudioLevels = function (isRecording) {
var _a = useState(0), audioLevel = _a[0], setAudioLevel = _a[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;
};
//# sourceMappingURL=useAudioLevels.js.map