我正在使用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/