我正在尝试使用
我通过Google Web fundamentals的这个教程部分地实现了这个过程,但我无法理解他们建议的以下步骤。
正如教程所述:
缓冲区中保存的数据是来自麦克风的原始数据,您可以使用多种选项来处理这些数据:
- 直接上传到服务器 - 在本地存储 - 转换为专用文件格式(例如WAV),然后将其保存在服务器或本地
我可以做到这一点,但是我不知道如何在停止上下文后获取音频缓冲区。
使用 MediaRecorder,您可以这样做:
GetUserMedia()
和AudioContext
API从用户麦克风记录和保存音频片段。我已经成功地使用MediaRecorder
API实现了这一点,但不幸的是,Safari/iOS不支持它,因此我想仅使用来自AudioContext
API和缓冲区的方法来完成它。我通过Google Web fundamentals的这个教程部分地实现了这个过程,但我无法理解他们建议的以下步骤。
var handleSuccess = function(stream) {
var context = new AudioContext();
var source = context.createMediaStreamSource(stream);
var processor = context.createScriptProcessor(1024, 1, 1);
source.connect(processor);
processor.connect(context.destination);
processor.onaudioprocess = function(e) {
// ******
// TUTORIAL SUGGESTS: Do something with the data, i.e Convert this to WAV
// ******
// I ASK: How can I get this data in a buffer and then convert it to WAV etc.??
// *****
console.log(e.inputBuffer);
};
};
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(handleSuccess);
正如教程所述:
缓冲区中保存的数据是来自麦克风的原始数据,您可以使用多种选项来处理这些数据:
- 直接上传到服务器 - 在本地存储 - 转换为专用文件格式(例如WAV),然后将其保存在服务器或本地
我可以做到这一点,但是我不知道如何在停止上下文后获取音频缓冲区。
使用 MediaRecorder,您可以这样做:
mediaRecorder.ondataavailable = function(e) {
chunks.push(e.data);
}
录制完成后,你会得到一个缓冲区 chunks
。根据教程所建议的,必须有一种方式实现这一点,但我无法在第一个代码示例中找到要推入缓冲区的data
。
一旦获取了音频缓冲区,可以将其转换为WAV格式并将其制作成Blob等。
有人可以帮我解决这个问题吗?(我不想使用MediaRecorder
API)