【发布时间】:2019-02-26 17:48:40
【问题描述】:
我需要将使用 cordova-plugin-audioinput 录制的音频文件上传到 Web 服务。我需要使用这个插件而不是核心插件,因为 audioinput 支持 wav 音频格式,这是 Web 服务接受的唯一一种。
当检测到静音时,必须触发“停止录制”和“上传”操作(这是我需要帮助的任务)。
我认为我必须以某种方式使用波形来检测静音,因此为了学习如何在录制时实时读取音频数据,我正在尝试实现以下示例:
https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize
这是我的代码:
audioinput.start({
sampleRate: 24000,
fileUrl: cordova.file.cacheDirectory + 'test.wav',
streamToWebAudio: true
});
const audioCtx = audioinput.getAudioContext();
const analyser = audioCtx.createAnalyser();
analyser.fftSize = 2048;
var bufferLength = analyser.fftSize;
var dataArray = new Uint8Array(bufferLength);
let dataArray;
function draw () {
requestAnimationFrame(draw);
dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);
console.log(dataArray);
// ... draw the waveform ...
// ... or detect silence ...
}
draw();
遗憾的是,结果是在 draw() 函数中,所有 audioData 的项目的值都是 128。
我正在设备上进行测试(OnePlus 6 和 Android 9,但这也应该适用于 iOS)。
谢谢!
【问题讨论】:
标签: cordova phonegap web-audio-api