我正在运行该waveurfer麦克风实例,并且遇到启动this.stop.stream
这个问题,但我尝试在启动麦克风后立即停止它的情况。
此麦克风不录制任何内容-只是可视化。但是在镀铬中,麦克风一直保持打开状态直到重新加载。这对用户来说并不好玩。还有米
我发现了为什么在这里发生这种情况=> https://wavesurfer-js.org/api/file/src/plugin/microphone.js.html#lineNumber199
启动麦克风后调用的所有方法都带有“ this”。
我不够先进,无法找出我该如何停止使用该麦克风。
有人可以帮我吗?
预先感谢
export default function InitialAudioRecording({ handleStop }) {
const [noAudioYet, setNoAudioYet] = React.useState(true);
const [isRecording, setIsRecording] = React.useState(false);
const [isProcessing, setIsProcessing] = React.useState(false);
const [waveSurfer, setWaveSurfer] = React.useState();
const [showWavesurfer, setShowWavesurfer] = React.useState(false);
const waveformRef = React.useRef();
React.useEffect(() => {
if (waveformRef.current) {
const themeGradient = getThemeGradient();
const wavesurfer = WaveSurfer.create({
container: waveformRef.current,
barWidth: 5,
barHeight: 10,
cursorWidth: 0,
waveColor: themeGradient,
hideScrollbar: true,
autoCenter: false,
responsive: true,
interact: false,
width: 100,
height: 350,
maxCanvasWidth: 2000,
fillParent: true,
plugins: [MicrophonePlugin.create()]
});
wavesurfer.microphone.on('deviceReady', function(stream) {
console.log('Device ready!', stream);
});
wavesurfer.microphone.on('deviceError', function(code) {
console.warn('Device error: ' + code);
});
setWaveSurfer(wavesurfer);
}
}, []);
const stopMicrophone = waveSurfer && waveSurfer.microphone.stopDevice.bind(waveSurfer);
function startRecording() {
waveSurfer.microphone.start();
setShowWavesurfer(true);
setNoAudioYet(false);
setIsRecording(true);
}
function handleData(recordedBlob) {
console.log('chunk of real-time data is: ', recordedBlob);
}
function stopRecording() {
waveSurfer.microphone.stop();
setIsRecording(false);
setIsProcessing(true);
setShowWavesurfer(false);
}
return (
<AudioInterfaceWrapper>
{noAudioYet && (
<>
<NoAudioYet systemMessage={'record a fiddle.'} />
</>
)}
{!noAudioYet && (
<>
<Mic record={isRecording} onStop={handleStop} onData={handleData} mimeType="audio/webm" />
{isProcessing && <LoadingLineLong />}
</>
)}
<Waveform showWavesurfer={showWavesurfer} ref={waveformRef} />
{isRecording && <StopButton onClick={stopRecording} />}
{!isRecording && !isProcessing && <RecordButton onClick={startRecording} />}
</AudioInterfaceWrapper>
);
}