第3章 基本使用
在本章中,我们将学习RecordRTC的基本使用方法,包括如何初始化、开始录制、停止录制和保存录制内容。
3.1 初始化RecordRTC
使用RecordRTC的第一步是获取媒体流并初始化录制器:
获取媒体流并初始化
// 获取媒体流
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
}).then(function(stream) {
// 初始化RecordRTC
var recorder = RecordRTC(stream, {
type: 'video'
});
// 保存recorder实例供后续使用
window.recorder = recorder;
}).catch(function(error) {
console.error('获取媒体流失败:', error);
});
3.2 开始录制
初始化完成后,可以调用startRecording方法开始录制:
开始录制
// 开始录制
function startRecording() {
if (window.recorder) {
window.recorder.startRecording();
console.log('开始录制');
}
}
3.3 停止录制
录制完成后,调用stopRecording方法停止录制:
停止录制
// 停止录制
function stopRecording() {
if (window.recorder) {
window.recorder.stopRecording(function() {
// 获取录制的blob数据
var blob = window.recorder.getBlob();
console.log('录制完成,blob大小:', blob.size);
// 处理录制的数据
handleRecordedData(blob);
});
}
}
3.4 保存录制内容
录制完成后,可以将内容保存为文件或上传到服务器:
保存为文件
// 处理录制的数据
function handleRecordedData(blob) {
// 方法1: 创建下载链接
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'recording.webm';
a.click();
// 方法2: 使用RecordRTC的内置方法
RecordRTC.invokeSaveAsDialog(blob, 'my-recording.webm');
}
3.5 完整示例
以下是一个完整的录制示例:
完整录制示例
<!DOCTYPE html>
<html>
<head>
<title>RecordRTC示例</title>
</head>
<body>
<video id="preview" autoplay muted controls style="width: 100%; max-width: 600px;"></video>
<div style="margin: 20px 0;">
<button id="startBtn">开始录制</button>
<button id="stopBtn">停止录制</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/recordrtc@5.6.2/RecordRTC.min.js"></script>
<script>
var video = document.getElementById('preview');
var startBtn = document.getElementById('startBtn');
var stopBtn = document.getElementById('stopBtn');
var recorder;
// 获取媒体流
navigator.mediaDevices.getUserMedia({
video: true,
audio: true
}).then(function(stream) {
// 显示预览
video.srcObject = stream;
// 初始化RecordRTC
recorder = RecordRTC(stream, {
type: 'video'
});
// 绑定按钮事件
startBtn.addEventListener('click', function() {
recorder.startRecording();
startBtn.disabled = true;
stopBtn.disabled = false;
});
stopBtn.addEventListener('click', function() {
recorder.stopRecording(function() {
var blob = recorder.getBlob();
// 创建预览
video.srcObject = null;
video.src = URL.createObjectURL(blob);
// 启用下载
var a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = 'recording.webm';
a.textContent = '下载录制文件';
document.body.appendChild(a);
startBtn.disabled = false;
stopBtn.disabled = true;
});
});
stopBtn.disabled = true;
}).catch(function(error) {
console.error('Error accessing media devices:', error);
});
</script>
</body>
</html>
3.6 核心概念
理解以下核心概念有助于更好地使用RecordRTC:
- MediaStream:浏览器API提供的媒体流对象,包含音频和/或视频轨道
- Blob:录制完成后生成的二进制大对象,可以保存为文件或上传
- Recorder Instance:RecordRTC实例,用于控制录制过程
- Configuration:录制配置选项,决定录制的格式和质量