js屏幕录制分享功能

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button>共享屏幕</button>
    <script>
      const button = document.querySelector("button");
      button.addEventListener("click", async () => {
        const stream = await navigator.mediaDevices.getDisplayMedia({
          video: true,
        });

        const mime = MediaRecorder.isTypeSupported("video/webm;codecs=h264")
          ? "video/webm;codecs=h264"
          : "video/webm";

        const mediaRecorder = new MediaRecorder(stream, { mimeType: mime });

        const chunks = [];
        mediaRecorder.addEventListener("dataavailable", function (e) {
          chunks.push(e.data);
        });

        mediaRecorder.addEventListener("stop", () => {
          const blob = new Blob(chunks, { type: chunks[0].type });
          const url = URL.createObjectURL(blob);
          const a = document.createElement("a");
          a.href = url;
          a.download = "video.webm";
          a.click();
        });
        mediaRecorder.start();
      });
    </script>
  </body>
</html>
相关推荐
A黄俊辉A3 分钟前
axios+ts封装
开发语言·前端·javascript
小李小李不讲道理28 分钟前
「Ant Design 组件库探索」四:Input组件
前端·javascript·react.js
杨福瑞1 小时前
C语⾔内存函数
c语言·开发语言
eqwaak01 小时前
科技信息差(9.12)
开发语言·python·科技·量子计算
axban1 小时前
QT M/V架构开发实战:QStringListModel介绍
开发语言·数据库·qt
刘媚-海外1 小时前
Go语言开发AI应用
开发语言·人工智能·golang·go
郑板桥301 小时前
tua-body-scroll-lock踩坑记录
前端·javascript
勇敢牛牛_2 小时前
使用Rust实现服务配置/注册中心
开发语言·后端·rust·注册中心·配置中心
catchadmin2 小时前
PHP serialize 序列化完全指南
android·开发语言·php
解道Jdon2 小时前
SpringBoot4与Spring7发布:云原生深度进化
javascript·reactjs