html5+在线录音,html5在线录音示例源码(MediaStream Recording API)
时间: 2024-03-19 10:45:34 浏览: 94
好的,以下是一个基于MediaStream Recording API的HTML5在线录音的示例源码:
```html
<!DOCTYPE html>
<html>
<head>
<title>HTML5在线录音示例</title>
<meta charset="utf-8">
</head>
<body>
<button id="startRecordingButton">开始录音</button>
<button id="stopRecordingButton" disabled>停止录音</button>
<audio id="recordedAudio" controls></audio>
<script>
// 获取页面中的元素
var startRecordingButton = document.getElementById('startRecordingButton');
var stopRecordingButton = document.getElementById('stopRecordingButton');
var recordedAudio = document.getElementById('recordedAudio');
// 定义录音机和媒体流
var mediaRecorder;
var mediaStream;
// 当点击“开始录音”按钮时调用此函数
function startRecording() {
navigator.mediaDevices.getUserMedia({ audio: true })
.then(function(stream) {
// 获取到麦克风的媒体流后,创建一个MediaRecorder对象
mediaStream = stream;
mediaRecorder = new MediaRecorder(stream);
// 开始录音
mediaRecorder.start();
// 更新页面中的按钮状态
startRecordingButton.disabled = true;
stopRecordingButton.disabled = false;
// 当MediaRecorder开始录音时,将数据保存到一个Blob对象中
var chunks = [];
mediaRecorder.addEventListener('dataavailable', function(e) {
chunks.push(e.data);
});
// 当录音结束时,将保存的数据合并成一个Blob对象,并将其设置为<audio>元素的src属性
mediaRecorder.addEventListener('stop', function() {
var blob = new Blob(chunks, { type: 'audio/ogg; codecs=opus' });
recordedAudio.src = URL.createObjectURL(blob);
});
})
.catch(function(error) {
alert('无法访问麦克风:' + error);
});
}
// 当点击“停止录音”按钮时调用此函数
function stopRecording() {
// 停止录音,并释放麦克风的媒体流
mediaRecorder.stop();
mediaStream.getTracks().forEach(function(track) {
track.stop();
});
// 更新页面中的按钮状态
startRecordingButton.disabled = false;
stopRecordingButton.disabled = true;
}
// 为按钮添加事件处理程序
startRecordingButton.addEventListener('click', startRecording);
stopRecordingButton.addEventListener('click', stopRecording);
</script>
</body>
</html>
```
此示例代码中,我们使用`navigator.mediaDevices.getUserMedia()`方法来获取到麦克风的媒体流,并创建一个`MediaRecorder`对象来进行录音。当录音结束后,我们将保存的数据合并成一个`Blob`对象,并将其设置为`<audio>`元素的`src`属性,从而可以在页面中播放录音。
阅读全文