32

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

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

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

今天使用任何 WebRTC 浏览器都可以做到这一点吗?iOS 上的 Chrome 怎么样?

4

6 回答 6

20

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

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

有关更多信息,请参阅WebRTC 选项卡内容捕获提案

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

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

于 2012-11-29T23:05:26.873 回答
8

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

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

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

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

于 2013-02-20T09:42:27.673 回答
7

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

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

您可以在这个 Muaz Khan 的屏幕共享演示中尝试一下,该页面也包含所需的扩展。

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

  • about:config
  • 设置media.getusermedia.screensharing.enabledtrue
  • 添加*.webrtc-experiment.commedia.getusermedia.screensharing.allowed_domains标志。
  • 刷新演示页面并单击共享屏幕按钮。
于 2015-11-26T01:56:30.683 回答
6

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

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

于 2012-11-29T00:24:38.720 回答
3

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

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

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

于 2018-11-14T05:21:09.240 回答
0
navigator.mediaDevices.getDisplayMedia(constraint).then((stream)=>{
// todo...
})

现在你可以做到了,但 Safari 在音频方面与 Chrome 不同。

于 2021-04-07T09:06:43.077 回答