当前位置:首页 > JavaScript

js怎么实现屏幕录制

2026-01-31 03:04:55JavaScript

使用MediaDevices和MediaRecorder API

在JavaScript中,可以通过navigator.mediaDevices.getDisplayMedia获取屏幕内容,再结合MediaRecorder录制视频流。

async function startRecording() {
  const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });
  const recorder = new MediaRecorder(stream);
  const chunks = [];

  recorder.ondataavailable = e => chunks.push(e.data);
  recorder.onstop = () => {
    const blob = new Blob(chunks, { type: 'video/webm' });
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'recording.webm';
    a.click();
  };

  recorder.start();
  // 停止录制示例:recorder.stop();
}

添加音频轨道

若需同时录制麦克风音频,需合并屏幕和音频流:

async function recordWithAudio() {
  const screenStream = await navigator.mediaDevices.getDisplayMedia({ video: true });
  const audioStream = await navigator.mediaDevices.getUserMedia({ audio: true });
  const combinedStream = new MediaStream([
    ...screenStream.getVideoTracks(),
    ...audioStream.getAudioTracks()
  ]);

  const recorder = new MediaRecorder(combinedStream);
  // 其余逻辑同上
}

处理权限和兼容性

屏幕录制需用户明确授权,且仅在HTTPS或localhost环境下可用。检测兼容性:

if (!navigator.mediaDevices || !navigator.mediaDevices.getDisplayMedia) {
  console.error('Screen recording not supported');
}

使用第三方库简化流程

库如recordRTC可简化复杂操作:

js怎么实现屏幕录制

import RecordRTC from 'recordrtc';

const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });
const recorder = new RecordRTC(stream, { type: 'video' });
recorder.startRecording();

// 停止录制
recorder.stopRecording(() => {
  const blob = recorder.getBlob();
  // 处理blob
});

注意事项

  • 录制前需用户交互(如按钮点击),浏览器禁止自动启动。
  • 不同浏览器支持的视频编码可能不同(如Chrome用video/webm,Safari用video/mp4)。
  • 长时间录制需注意内存管理,可分段保存。

标签: 屏幕js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…