函数与方法

本章将详细介绍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的错误情况。