javascript - 如何从cordova-plugin-audioinput获取音频流以进行实时可视化

标签 javascript cordova web audio

我正在使用cordova-plugin-audioinput在基于Cordova的应用程序中录制音频。
该文档可以在这里找到:https://www.npmjs.com/package/cordova-plugin-audioinput

我以前使用浏览器的MediaRecorder功能来录制音频,但是由于音频质量问题,我切换到了插件。
我的问题是我在录制过程中可以实时看到音量,我的功能曾经使用媒体录制器的输入流工作

function wave(stream) {
    audioContext = new AudioContext();
    analyser = audioContext.createAnalyser();
    microphone = audioContext.createMediaStreamSource(stream);
    javascriptNode = audioContext.createScriptProcessor(2048, 1, 1);

    analyser.smoothingTimeConstant = 0.8;
    analyser.fftSize = 1024;

    microphone.connect(analyser);
    analyser.connect(javascriptNode);
    javascriptNode.connect(audioContext.destination);
    javascriptNode.onaudioprocess = function () {
        var array = new Uint8Array(analyser.frequencyBinCount);
        analyser.getByteFrequencyData(array);
        var values = 0;
        var length = array.length;
        for (var i = 0; i < length; i++) {
            values += (array[i]);
        }

        var average = values / length;
        // use average for visualization

    }
}

现在,我使用cordova-plugin-audioinput,即使文档中提到了“streamToWebAudio”参数,我也找不到从麦克风检索流的方法,但我找不到使它工作的方法。

有什么见解吗?
预先谢谢你!

最佳答案

我相信您必须改为连接分析仪,例如

 function wave(stream) {    
      var audioContext = new AudioContext();
      var analyser = audioContext.createAnalyser();
      analyser.connect(audioContext.destination);
      audioinput.start({streamToWebAudio: true});
      var dest = audioinput.getAudioContext().createMediaStreamDestination();
      audioinput.connect(dest);
      var stream = dest.stream;
      var input = audioContext.createMediaStreamSource(stream);
      input.connect(analyser);
      analyser.onaudioprocess = function(){
            ...
      }
 }

关于javascript - 如何从cordova-plugin-audioinput获取音频流以进行实时可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57579956/

相关文章:

Javascript 复选框选择顺序

JavaScript 和 Promise.all()

android - PhoneGap + jqueryMobile 文本转语音

ios - 找不到插件,或者不是 CDVPlugin。检查 config.xml 中的插件映射

javascript - 我的带有 classList.toggle 的 javascript 代码不能正常工作

jquery - 网站崩溃(在)Firefox

javascript - 如何在每次重新加载页面时不调用指令

javascript - 从一个页面移动到另一个页面会产生错误(重复?)

asp.net - 使用ASP.NET curl 请求

javascript - 在滚动时在 javascript (window.open) 中打开一个窗口而不会被弹出窗口阻止程序阻止