webrtc实现录音 , 并保存文件,详细代码
时间: 2024-02-28 21:53:43 浏览: 172
以下是一个完整的示例代码,它实现了使用WebRTC录制音频并保存到本地:
```javascript
// 获取用户媒体许可
navigator.mediaDevices.getUserMedia({ audio: true })
.then(function(stream) {
// 创建MediaRecorder对象
var mediaRecorder = new MediaRecorder(stream);
// 存储音频数据块
var chunks = [];
// 监听音频数据可用事件
mediaRecorder.ondataavailable = function(e) {
chunks.push(e.data);
};
// 监听录音结束事件
mediaRecorder.onstop = function(e) {
// 将音频数据块合并成单个Blob对象
var blob = new Blob(chunks, { 'type' : 'audio/wav' });
// 创建URL,用于播放录制的音频
var audioURL = URL.createObjectURL(blob);
// 创建一个新的Audio元素并设置其源为录制的音频
var audio = new Audio(audioURL);
// 创建一个新的链接元素,并将其下载属性设置为录制的音频文件
var link = document.createElement('a');
link.href = audioURL;
link.download = 'recording.wav';
link.innerHTML = '点击下载录音文件!';
document.body.appendChild(link);
};
// 开始录音
mediaRecorder.start();
// 录音持续时间
var duration = 5000; // 5秒钟
// 停止录音
setTimeout(function() {
mediaRecorder.stop();
}, duration);
})
.catch(function(err) {
console.log('获取用户媒体许可失败:' + err);
});
```
这个示例代码使用了Promise语法,它首先使用getUserMedia()方法获取用户的媒体许可,然后创建一个MediaRecorder对象来记录音频流。每当音频数据可用时,它将数据块存储在一个数组中。当录音结束时,它将所有音频数据块合并成单个Blob对象,并使用URL.createObjectURL()方法创建一个URL,用于播放录制的音频。然后,它创建一个新的链接元素,并将其下载属性设置为录制的音频文件,最后将其添加到文档中。最后,它使用setTimeout()方法设置录音持续时间,并在到达时间后停止录音。
阅读全文