web rtc 录音代码示例
时间: 2024-09-13 13:01:11 浏览: 50
WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话、视频对话和点对点文件共享的开源项目。以下是一个简单的WebRTC录音的代码示例,使用了MediaRecorder API来捕获音频流并将其录制为文件。
```javascript
// HTML部分,包含audio元素用于播放录制的音频
// <audio id="audioPlayer" controls></audio>
// JavaScript部分
// 获取audio元素
var audioPlayer = document.querySelector('#audioPlayer');
// 获取音频流
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(function(stream) {
// 将音频流绑定到audio元素上,以便播放
audioPlayer.srcObject = stream;
// 使用MediaRecorder API进行录音
var mediaRecorder = new MediaRecorder(stream);
// 准备存放录音数据的数组
var chunks = [];
// 当有音频数据可使用时,会触发dataavailable事件
mediaRecorder.ondataavailable = function(event) {
chunks.push(event.data);
};
// 当录音结束时,会触发stop事件
mediaRecorder.onstop = function() {
// 将所有数据块合成一个音频文件
var audioBlob = new Blob(chunks, { 'type' : 'audio/ogg' });
// 创建下载链接
var audioUrl = URL.createObjectURL(audioBlob);
audioPlayer.src = audioUrl;
// 创建一个下载链接让用户可以下载录音文件
var downloadLink = document.createElement('a');
downloadLink.href = audioUrl;
downloadLink.download = 'recorded-audio.ogv';
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
};
// 开始录音
mediaRecorder.start();
// 在60秒后停止录音
setTimeout(function() {
mediaRecorder.stop();
}, 60000);
}).catch(function(error) {
console.log("发生错误:", error);
});
```
这段代码首先通过`navigator.mediaDevices.getUserMedia`获取音频流,然后使用`MediaRecorder`对象来录制这个音频流。当用户调用`start()`方法后,`MediaRecorder`开始监听数据,并在有可用音频数据时触发`dataavailable`事件,将数据块存储到数组中。当调用`stop()`方法后,会触发`stop`事件,此时可以将所有数据块合成一个音频文件,并创建一个下载链接供用户下载。
请注意,上述代码是一个基本的示例,实际应用中可能需要处理更多的错误情况和用户交互,以及兼容不同浏览器的实现。
阅读全文