当前位置:首页 > JavaScript

js实现屏幕共享

2026-03-15 16:37:58JavaScript

使用 getDisplayMedia API 实现屏幕共享

getDisplayMedia 是浏览器提供的 API,允许用户选择屏幕、窗口或标签页进行共享。以下是基本实现方式:

async function startScreenSharing() {
  try {
    const stream = await navigator.mediaDevices.getDisplayMedia({
      video: {
        cursor: "always",
        displaySurface: "window"
      },
      audio: false
    });
    const videoElement = document.getElementById('screenShare');
    videoElement.srcObject = stream;
  } catch (err) {
    console.error("Error sharing screen:", err);
  }
}

设置共享约束参数

可以通过约束参数调整共享内容的质量和行为:

const constraints = {
  video: {
    width: { ideal: 1920 },
    height: { ideal: 1080 },
    frameRate: { ideal: 30 },
    displaySurface: "monitor" // 或 "window", "browser"
  }
};

处理共享停止事件

监听 ended 事件可处理用户主动停止共享的情况:

stream.getVideoTracks()[0].addEventListener('ended', () => {
  console.log('Screen sharing stopped by user');
  // 执行清理操作
});

结合 WebRTC 实现远程共享

如需将共享内容发送给远端,可与 RTCPeerConnection 结合:

const peerConnection = new RTCPeerConnection();
stream.getTracks().forEach(track => {
  peerConnection.addTrack(track, stream);
});

// 继续完成信令流程...

浏览器兼容性处理

不同浏览器可能需要前缀或特殊处理:

const getDisplayMedia = 
  navigator.mediaDevices.getDisplayMedia ||
  navigator.mediaDevices.webkitGetDisplayMedia ||
  navigator.mediaDevices.mozGetDisplayMedia;

权限和用户体验注意事项

  • 必须在用户手势事件(如点击)中触发 API 调用
  • 部分浏览器限制扩展程序域的共享
  • 共享指示器会显示在屏幕上提醒用户
  • 需处理用户拒绝权限的情况

扩展功能实现

可添加画中画模式提升用户体验:

js实现屏幕共享

videoElement.addEventListener('enterpictureinpicture', () => {
  console.log('Entered PiP mode');
});

以上代码片段展示了屏幕共享的核心实现方式,实际应用中需根据具体需求调整参数和处理边界情况。

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

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…