前端实现录音和录音上传详细代码
时间: 2024-05-06 16:18:53 浏览: 65
实现录音的源代码
4星 · 用户满意度95%
录音和录音上传涉及到浏览器的WebAPI和后端的API接口。下面是前端实现录音和录音上传的详细代码:
1. 录音
使用浏览器的WebAPI中的MediaRecorder可以实现录音功能。在实现录音之前,需要先获取用户的录音设备权限,可以使用getUserMedia方法。以下是一个获取录音设备权限和开始录音的示例代码:
```javascript
const constraints = { audio: true };
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => {
const mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
// 录音开始,可以在这里编写录音时的逻辑
})
.catch(error => {
console.error('getUserMedia error:', error);
});
```
在开始录音后,可以在MediaRecorder的dataavailable事件中获取录音数据。以下是一个获取录音数据并保存到本地的示例代码:
```javascript
const chunks = [];
mediaRecorder.addEventListener('dataavailable', event => {
chunks.push(event.data);
});
mediaRecorder.addEventListener('stop', () => {
const blob = new Blob(chunks, { type: 'audio/ogg; codecs=opus' });
const url = URL.createObjectURL(blob);
// 将录音保存到本地
const a = document.createElement('a');
a.href = url;
a.download = 'record.ogg';
a.click();
});
```
2. 录音上传
录音上传需要使用后端API接口,可以使用fetch方法发送POST请求将录音文件上传到服务器。以下是一个上传录音文件的示例代码:
```javascript
const formData = new FormData();
formData.append('file', blob, 'record.ogg');
fetch('/upload', {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
console.log('Upload success!');
} else {
console.error('Upload failed!');
}
})
.catch(error => {
console.error('Upload error:', error);
});
```
其中,formData.append方法用于将录音文件添加到FormData对象中,fetch方法用于发送POST请求并上传录音文件。在后端API接口中,需要使用multipart/form-data格式解析上传的录音文件。
阅读全文