我使用cordova -plugin- audio cordova在我的基于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“参数,我也找不到一种方法来让它工作。
对此有什么见解吗?提前谢谢你!
发布于 2019-08-21 05:09:31
我认为您必须连接分析器,例如
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(){
...
}
}
https://stackoverflow.com/questions/57579956
复制相似问题