Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何每20ms仅捕获8个字节的音频缓冲区?_Javascript_Audio Streaming_Web Audio Api - Fatal编程技术网

Javascript 如何每20ms仅捕获8个字节的音频缓冲区?

Javascript 如何每20ms仅捕获8个字节的音频缓冲区?,javascript,audio-streaming,web-audio-api,Javascript,Audio Streaming,Web Audio Api,我使用Javascript Web Audio API捕获麦克风流,我通过UDP传输发送数据,但在发送之前,我需要每20毫秒将数据转换为8帧(总共160帧)。有没有人举过一个例子,或者以前做过 navigator.mediaDevices.getUserMedia({ audio: true }) .then((stream)=>{ micStream.setStream(stream); const context = new AudioCon

我使用Javascript Web Audio API捕获麦克风流,我通过UDP传输发送数据,但在发送之前,我需要每20毫秒将数据转换为8帧(总共160帧)。有没有人举过一个例子,或者以前做过

navigator.mediaDevices.getUserMedia({ audio: true })
    .then((stream)=>{

        micStream.setStream(stream);

        const context = new AudioContext();
        const processor = context.createScriptProcessor(16384,1,1);
        const mediaStreamSource = context.createMediaStreamSource(stream);
        mediaStreamSource.connect(processor);
        processor.connect(context.destination);

      processor.onaudioprocess = (e) =>{
        try{
          if(!this.isValidAudio()){
            context.close();
          }else{
            const leftData = e.inputBuffer.getChannelData(0);
            const buffer = this.convertFloat32ToInt16(leftData); 

            this.ws.send(buffer, (result)=>{
                console.log('Result >> ', result);
            }, false);
          }
        }catch(error){
          console.log('error >> ', error)
        }
      };
    }).catch((e)=>{
      console.log('stream error >> ', e);
    })

我使用wasm,AudioWorkletProcessor和一个RingBuffer实现解决了它。我最近发布了一个NPM库,使它变得简单。我使用wasm,AudioWorkletProcessor和一个RingBuffer实现解决了它。我最近发布了一个NPM库,使它变得简单