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

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

省流

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

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...

相关推荐
福兮说3 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas
郑州光合科技余经理4 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
小呆呆6664 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
凤城老人4 小时前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)5 小时前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
码艺-Alimjan5 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
可乐鸡翅yeah_6 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒6 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
广州华水科技6 小时前
大坝安全监测解决方案:单北斗GNSS形变监测系统应用与维护
前端
yivifu7 小时前
中文古籍电子书注释集成
前端·javascript·python·beautifulsoup·epub