Wavesurfer микрофон не может быть остановлен ИЛИ как остановить все userMedia - PullRequest
0 голосов
/ 12 января 2020

У меня проблемы с волновым серфером. Я использую его для визуализации входа микрофона, и мне трудно отписаться от него.

У Wavesurfer есть несколько способов остановить микрофон , но ни один из них не работает. Я всегда получаю this.stream.stop is not a function

Например, если я помещаю waveSurfer.microphone.stop() в свою функцию handleStop.

, почему waveSurfer.microphone.start () работает, а stop () не работает?

Может кто-нибудь помочь?

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: 2,
        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);
    }
  }, []);

  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();
    setShowWavesurfer(false);
    setIsRecording(false);
    setIsProcessing(true);
  }
...