UNPKG

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
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