用浏览器实现一个屏幕录制功能

用浏览器实现一个屏幕录制功能

省流

将这段代码复制到控制台点击 '屏幕录制' 按钮

js 复制代码
const button = document.createElement("button");
button.innerHTML = "屏幕录制";
button.style = "position: fixed; top:200px; z-index: 99999999999;";
document.body.append(button);
button.addEventListener("click", async () => {
  const stream = await navigator.mediaDevices.getDisplayMedia();

  const recoder = new MediaRecorder(stream);
  recoder.start();
  const [video] = stream.getVideoTracks();
  const [video] = stream.getVideoTracks();
  video.addEventListener("ended", () => {
    recoder.stop();
  });
  recoder.addEventListener("dataavailable", (evt) => {
    const a = document.createElement("a");
    a.href = URL.createObjectURL(evt.data);
    a.download = "capture.webm";
    a.click();
  });
});

解析

  1. document.createElement("button") 创建一个 button ,填充文字,添加到 body 上
  2. 为了安全考虑,只监听用户行为来触发
  3. navigator.mediaDevices.getDisplayMedia() 来提示用户去选择和授权捕获展示的内容或部分内容
  4. MediaRecorder 来进行媒体录制的接口
  5. 创建 a 标签来保存录制数据,并且下载

使用场景

  • 提供给测试,能够快速屏幕录制
  • 代码演示
  • 其它用法去评论区留言,让大家开开眼

配合使用

在线文件转换:convertio.co/zh/download...

图片压缩:docsmall.com/

兼容性

  • getDisplayMedia

  • MediaRecorder()

参考

developer.mozilla.org/zh-CN/docs/...

developer.mozilla.org/zh-CN/docs/...

dev.to/ninofiliu/s...

相关推荐
牧杉-惊蛰8 分钟前
disable-devtool 网络安全 禁止打开控制台
前端·css·vue.js
C+ 安口木26 分钟前
vue中监听window某个属性被添加或值的变化
前端·javascript·vue.js
山海鲸可视化30 分钟前
简单聊聊数据可视化大屏制作的前端设计与后端开发
前端·信息可视化·数字孪生·数据可视化·3d模型·三维渲染
CoderYanger33 分钟前
前端基础-HTML入门保姆级课堂笔记
前端·javascript·css·html
赛博切图仔33 分钟前
qiankun、micro-app、wujie,2025年我们该选谁?
前端·javascript
LuckySusu38 分钟前
【vue篇】Vue 自定义指令完全指南:从入门到高级实战
前端·vue.js
LuckySusu40 分钟前
【vue篇】Vue 响应式核心:依赖收集机制深度解密
前端·vue.js
LuckySusu41 分钟前
【vue篇】Vue.js 2025:为何全球开发者都在拥抱这个前端框架?
前端·vue.js
LuckySusu43 分钟前
【vue篇】Vue 单向数据流铁律:子组件为何不能直接修改父组件数据?
前端·vue.js
LuckySusu1 小时前
【vue篇】React vs Vue:2025 前端双雄终极对比
前端·vue.js