当前位置:首页 > 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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…