【问题标题】:Screen sharing with WebRTC?与 WebRTC 共享屏幕?
【发布时间】:2012-11-28 23:45:07
【问题描述】:

我们正在探索 WebRTC,但发现关于目前可能和支持的信息相互矛盾。

使用 WebRTC,是否可以重新创建类似于 join.me 或 WebEx 的屏幕共享服务,其中:

  • 您可以共享屏幕的一部分
  • 您可以将控制权交给对方
  • 无需下载

现在任何 WebRTC 浏览器都可以做到这一点吗? iOS 上的 Chrome 怎么样?

【问题讨论】:

标签: webrtc screensharing


【解决方案1】:

chrome.tabCapture API 可用于 Chrome 应用和扩展程序。

这使得可以将选项卡的可见区域捕获为可以在本地使用或通过 RTCPeerConnection 的 addStream() 共享的流。

有关详细信息,请参阅WebRTC Tab Content Capture proposal

屏幕共享最初支持使用带有 chromeMediaSource 约束的 getUserMedia 的“普通”网页,但这已被禁止。

2015 年 4 月 1 日编辑:现已编辑,仅 Chrome 应用和扩展程序中的 Chrome 支持屏幕共享。

【讨论】:

  • 非常有趣——我错过了。看着它,将其称为单独的 API 似乎是一件奇怪的事情——这不应该只是更大的桌面共享 API 的一部分吗?在该 API 中,您应该能够选择要共享的特定区域或特定窗口或整个桌面 - 选择特定选项卡应该只是其中的一部分。这只是建立全屏共享 API 的临时实验吗?还是它本身就是目的?
  • 这应该被更新,因为它没有提到现在在 Chrome 中默认禁用屏幕共享,除非您在启动 Chrome 时在命令行上传递“--enable-usermedia-screen-capture” .
  • 是的,它可以工作,但它非常消耗 CPU,浏览器变慢,即使在较差的分辨率/帧率下...这是我观察到的以下插件:github.com/muaz-khan/Chrome-Extensions/tree/master/tabCapture
【解决方案2】:

你们可能知道屏幕捕获(不是 tabCapture )在 Chrome Canary (26+) 中可用,我们最近刚刚在以下位置发布了一个演示; https://screensharing.azurewebsites.net

注意需要在 https:// 下运行,

video: {
  mandatory: {
    chromeMediaSource: 'screen'   
  }

你也可以在这里找到一个例子; https://html5-demos.appspot.com/static/getusermedia/screenshare.html

【讨论】:

  • 嗨,dathor,仅供参考,azurewebsites 上的演示会捕获屏幕,但不会传输到其他端点。它只显示主页。但是,官方的 HTML5 Demo 效果很好。为此 +1!
  • 嗨,是的,您可以在 joinaspot.com 上找到一个新的演示,确保您在 https:// 上下文中运行
  • 我太累了,所以我可能错过了,但我没有看到屏幕共享功能?很酷的演示。让我想起了bistri.com
  • 是的,当您运行 https:// 时,它会为您提供该选项...您还可以下载我们的免费开源库并自己构建它。看看github.com/XSockets/WebRTC
  • 我在 chrome 上试过这个:55 它失败并显示以下消息:PERMISSION_DENIED。你没有SSL吗?您是否启用了 --enable-usermedia-screen-capture 标志?我猜它在 chrome 上是不允许的(早期版本是 34+),但谷歌从 chrome 中删除了权限本身。
【解决方案3】:

我知道我回答有点晚了,但希望它可以帮助那些偶然发现该页面的人,如果不是 OP。

目前,Firefox 和 Chrome 都支持通过 WebRTC 与对等方共享整个屏幕或部分屏幕(您可以选择的某些应用程序窗口)作为媒体流,就像您的相机/麦克风提要一样,所以没有选项让其他党控制你的桌面呢。除此之外,还有另一个问题,您的网站必须在 https 模式下运行,并且在 firefox 和 chrome 中,用户都必须安装扩展程序。

您可以在这个 Muaz Khan 的Screen-sharing Demo 中尝试一下,该页面也包含所需的扩展。

P。 S:如果你不想安装扩展来运行demo,在firefox中(chrome中没有办法转义扩展),你只需要修改两个flag,

  • 转至about:config
  • media.getusermedia.screensharing.enabled设置为true
  • *.webrtc-experiment.com 添加到media.getusermedia.screensharing.allowed_domains 标志。
  • 刷新演示页面并单击共享屏幕按钮。

【讨论】:

  • 此屏幕共享演示不再起作用,因为 chrome 中的屏幕共享选项不再存在
  • 现在不需要在 Firefox 中乱用 about:config 了。屏幕共享在当前版本的 Firefox 中默认工作。
【解决方案4】:

据我所知,目前任何浏览器都不可能,尽管 Google Chrome 团队表示他们最终打算支持这种情况(请参阅他们的 @987654321 上的“屏幕共享”要点) @);而且我怀疑这意味着最终其他浏览器会跟进,大概是 IE 和 Safari 会出现尾随。但所有这些都可能在 2 月之后的某个地方发布,届时他们应该最终确定当前的 WebRTC 标准并交付生产位。 (希望微软的最后一分钟扳手不会搞砸。)我可能错过了最近的一些东西,但我一直在非常仔细地关注这个项目,我认为屏幕共享甚至没有成功还没有进入 Chrome Canary,更不用说 dev/beta/prod。 Opera 是唯一在其 WebRTC 实施上与 Chrome 保持同步的浏览器(FireFox 似乎落后了大约 6 个月),我也没有从该团队看到任何关于屏幕共享的信息。

有人告诉我,现在有一种方法可以做到这一点,那就是编写自己的网络摄像头驱动程序,这样你的本地屏幕就会像 WebRTC getUserMedia() API 一样出现另一个视频源。我不知道有人这样做过——当然,这需要在有问题的机器上安装驱动程序。当一切都说完了,使用 VNC 或类似的东西可能会更容易。

【讨论】:

    【解决方案5】:

    有一个开源的 chrome 扩展可以做到这一点。请检查一下 https://github.com/ant-media/Chrome-Screen-Capture-Extension

    Github Wiki 上还有一个使用扩展的文档

    https://github.com/ant-media/Ant-Media-Server/wiki/WebRTC-Screen-Sharing

    【讨论】:

      【解决方案6】:
      navigator.mediaDevices.getDisplayMedia(constraint).then((stream)=>{
      // todo...
      })
      

      现在您可以做到这一点,但 Safari 在音频方面与 Chrome 不同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多