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>
相关推荐
Dovis(誓平步青云)15 分钟前
《静态库与动态库:从编译原理到实战调用,一篇文章讲透》
linux·运维·开发语言
Nan_Shu_61420 分钟前
学习:JavaScript(1)
开发语言·javascript·学习·ecmascript
zhangx1234_27 分钟前
C语言题目1
c语言·开发语言·数据结构
菜鸡儿齐28 分钟前
ThreadLocal介绍
java·开发语言
国服第二切图仔30 分钟前
Rust开发之自定义错误类型(实现Error trait)
开发语言·python·rust
木木子999931 分钟前
Next.js, Node.js, JavaScript, TypeScript 的关系
javascript·typescript·node.js
雨中散步撒哈拉41 分钟前
14、做中学 | 初二上期 Golang集合Map
开发语言·后端·golang
.生产的驴2 小时前
React 页面路由ReactRouter 路由跳转 参数传递 路由配置 嵌套路由
前端·javascript·react.js·前端框架·json·ecmascript·html5
打小就很皮...2 小时前
PDF 下载弹窗 content 区域可行性方案
前端·javascript·pdf
m0_748240255 小时前
Windows编程+使用C++编写EXE加壳程序
开发语言·c++·windows