Javascript 将麦克风音频通过 mediaRecorder转成mp3
时间: 2023-07-31 12:09:19 浏览: 326
要将麦克风音频通过 `MediaRecorder` 转成 MP3 格式,需要使用第三方库,如 `lamejs` 或 `libmp3lame.js`。
下面是一个使用 `lamejs` 的示例代码:
```javascript
// 引入 lamejs 库
import lamejs from 'lamejs';
// 获取麦克风音频流
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
// 创建 MediaRecorder 对象
const mediaRecorder = new MediaRecorder(stream);
// 监听数据可用事件
mediaRecorder.addEventListener('dataavailable', event => {
// 获取音频数据
const audioData = event.data;
// 转成 ArrayBuffer 格式
audioData.arrayBuffer().then(arrayBuffer => {
// 调用 lamejs 库的转码函数
const mp3Encoder = new lamejs.Mp3Encoder(1, 44100, 128);
const mp3Data = mp3Encoder.encodeBuffer(new Int16Array(arrayBuffer));
const mp3Blob = new Blob([mp3Data], { type: 'audio/mp3' });
// 处理转码后的 MP3 音频数据
// ...
});
});
// 开始录音
mediaRecorder.start();
})
.catch(error => {
console.error(error);
});
```
在上面的代码中,我们使用 `MediaRecorder` 对象获取麦克风音频流,并监听其 `dataavailable` 事件。当音频数据可用时,我们将其转成 ArrayBuffer 格式,并使用 `lamejs` 库的 `Mp3Encoder` 类将其转成 MP3 格式。最后,我们可以将转码后的 MP3 音频数据上传到服务器或进行其他处理。
阅读全文