函数与方法
本章将详细介绍videojs-record提供的所有函数和方法,帮助您更好地使用这个插件。
10.1 核心方法
videojs-record的核心方法用于控制录制过程:
方法名 | 描述 | 参数 | 返回值 |
---|---|---|---|
start() | 开始录制 | 无 | Promise |
stop() | 停止录制 | 无 | Promise |
pause() | 暂停录制 | 无 | Promise |
resume() | 恢复录制 | 无 | Promise |
reset() | 重置录制状态 | 无 | Promise |
核心方法使用示例
// 获取record实例
const record = player.record();
// 开始录制
record.start().then(() => {
console.log('录制已开始');
}).catch(error => {
console.error('开始录制失败:', error);
});
// 暂停录制
record.pause().then(() => {
console.log('录制已暂停');
});
// 恢复录制
record.resume().then(() => {
console.log('录制已恢复');
});
// 停止录制
record.stop().then(() => {
console.log('录制已停止');
});
// 重置录制
record.reset().then(() => {
console.log('录制已重置');
});
10.2 设备管理方法
设备管理方法用于控制媒体设备:
方法名 | 描述 | 参数 | 返回值 |
---|---|---|---|
getDevice() | 获取可用媒体设备 | 无 | Promise<MediaDeviceInfo[]> |
loadDevice() | 加载媒体设备 | 无 | Promise |
stopDevice() | 停止媒体设备 | 无 | 无 |
setAudioInput(deviceId) | 设置音频输入设备 | deviceId: string | Promise |
setVideoInput(constraints) | 设置视频输入约束 | constraints: object | Promise |
设备管理方法使用示例
// 获取所有媒体设备
record.getDevice().then(devices => {
console.log('可用设备:', devices);
// 筛选视频设备
const videoDevices = devices.filter(device => device.kind === 'videoinput');
console.log('视频设备:', videoDevices);
// 筛选音频设备
const audioDevices = devices.filter(device => device.kind === 'audioinput');
console.log('音频设备:', audioDevices);
});
// 设置音频输入设备
record.setAudioInput('default').then(() => {
console.log('音频设备设置成功');
});
// 设置视频输入约束
record.setVideoInput({
width: 1280,
height: 720,
facingMode: 'user'
}).then(() => {
console.log('视频设备设置成功');
});
// 加载设备
record.loadDevice().then(() => {
console.log('设备加载成功');
});
// 停止设备
record.stopDevice();
console.log('设备已停止');
10.3 配置方法
配置方法用于修改录制配置:
方法名 | 描述 | 参数 | 返回值 |
---|---|---|---|
setAudioSettings(settings) | 设置音频配置 | settings: object | 无 |
setVideoSettings(settings) | 设置视频配置 | settings: object | 无 |
setScreenSettings(settings) | 设置屏幕录制配置 | settings: object | 无 |
setMaxLength(seconds) | 设置最大录制时长 | seconds: number | 无 |
setMaxFileSize(bytes) | 设置最大文件大小 | bytes: number | 无 |
配置方法使用示例
// 设置音频配置
record.setAudioSettings({
sampleRate: 44100,
channelCount: 2,
audioBitRate: 128
});
// 设置视频配置
record.setVideoSettings({
width: 1920,
height: 1080,
frameRate: 30,
videoBitRate: 2500
});
// 设置屏幕录制配置
record.setScreenSettings({
width: { min: 640, ideal: 1280, max: 1920 },
height: { min: 480, ideal: 720, max: 1080 }
});
// 设置最大录制时长(300秒)
record.setMaxLength(300);
// 设置最大文件大小(100MB)
record.setMaxFileSize(100 * 1024 * 1024);
10.4 状态检查方法
状态检查方法用于获取录制状态:
方法名 | 描述 | 参数 | 返回值 |
---|---|---|---|
isRecording() | 检查是否正在录制 | 无 | boolean |
isPaused() | 检查是否已暂停 | 无 | boolean |
isDeviceReady() | 检查设备是否就绪 | 无 | boolean |
isScreenSupported() | 检查是否支持屏幕录制 | 无 | boolean |
getDuration() | 获取录制时长 | 无 | number |
状态检查方法使用示例
// 检查录制状态
if (record.isRecording()) {
console.log('正在录制');
} else {
console.log('未在录制');
}
// 检查暂停状态
if (record.isPaused()) {
console.log('录制已暂停');
}
// 检查设备状态
if (record.isDeviceReady()) {
console.log('设备已就绪');
}
// 检查屏幕录制支持
if (record.isScreenSupported()) {
console.log('支持屏幕录制');
}
// 获取录制时长
const duration = record.getDuration();
console.log('录制时长:', duration, '秒');
10.5 数据处理方法
数据处理方法用于处理录制的数据:
方法名 | 描述 | 参数 | 返回值 |
---|---|---|---|
saveAs(name) | 保存录制数据为文件 | name: string | 无 |
getBlob() | 获取录制数据Blob | 无 | Blob |
getBuffer() | 获取录制数据ArrayBuffer | 无 | ArrayBuffer |
getDataURL() | 获取录制数据DataURL | 无 | Promise<string> |
destroy() | 销毁录制实例 | 无 | 无 |
数据处理方法使用示例
// 保存录制数据为文件
record.saveAs('my-recording.webm');
// 获取录制数据Blob
const blob = record.getBlob();
console.log('Blob数据:', blob);
// 获取录制数据ArrayBuffer
const buffer = record.getBuffer();
console.log('ArrayBuffer数据:', buffer);
// 获取录制数据DataURL
record.getDataURL().then(dataURL => {
console.log('DataURL:', dataURL);
// 创建图片元素显示缩略图
const img = document.createElement('img');
img.src = dataURL;
document.body.appendChild(img);
});
// 销毁录制实例
record.destroy();
console.log('录制实例已销毁');
10.6 高级方法
高级方法提供更专业的功能:
方法名 | 描述 | 参数 | 返回值 |
---|---|---|---|
mute() | 静音录制 | 无 | 无 |
unmute() | 取消静音 | 无 | 无 |
setAudioOutput(deviceId) | 设置音频输出设备 | deviceId: string | Promise |
applyConstraints(constraints) | 应用媒体约束 | constraints: object | Promise |
enumerateDevices() | 枚举媒体设备 | 无 | Promise<MediaDeviceInfo[]> |
高级方法使用示例
// 静音录制
record.mute();
console.log('录制已静音');
// 取消静音
record.unmute();
console.log('录制已取消静音');
// 设置音频输出设备
record.setAudioOutput('default').then(() => {
console.log('音频输出设备设置成功');
});
// 应用媒体约束
record.applyConstraints({
video: {
width: 1280,
height: 720
}
}).then(() => {
console.log('约束应用成功');
});
// 枚举媒体设备
record.enumerateDevices().then(devices => {
console.log('所有媒体设备:', devices);
});
提示:在使用这些方法时,建议先检查浏览器兼容性,并妥善处理Promise的错误情况。