与WebRTC共享屏幕?

时间:2012-11-28 23:45:07

标签: webrtc screensharing

我们正在探索WebRTC,但我们已经看到了有关今天可行和支持的相互矛盾的信息。

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

  • 您可以分享部分屏幕
  • 您可以控制另一方
  • 无需下载

今天是否可以使用任何WebRTC浏览器? iOS上的Chrome怎么样?

6 个答案:

答案 0 :(得分:19)

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

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

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

屏幕共享最初支持使用带有chromeMediaSource约束的getUserMedia的“普通”网页 - 但这是不允许的。

编辑2015年4月1日:现在已修改Chrome浏览器应用和扩展程序仅支持屏幕共享。

答案 1 :(得分:8)

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

请注意,您需要在https://,

下运行它
video: {
  mandatory: {
    chromeMediaSource: 'screen'   
  }

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

答案 2 :(得分:7)

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

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

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

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

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

答案 3 :(得分:6)

据我所知,现在使用任何浏览器都不可能,尽管谷歌Chrome团队已经表示他们最终打算支持这种情况(请参阅他们{{屏幕上的“屏幕共享”子弹点) 3}});而且我怀疑这意味着最终其他浏览器也会跟随,大概是IE和Safari会带来尾声。但所有这些可能都是在2月份的某个地方出现的,那时他们应该最终确定当前的WebRTC标准和出货量。 (希望微软的最后一分钟工作不会搞砸了。)我可能最近错过了一些东西,但我一直非常小心地关注这个项目,我认为屏幕共享甚至没有成功进入Chrome Canary,更不用说dev / beta / prod了。 Opera是WebRTC实施中唯一与Chrome保持同步的浏览器(FireFox似乎落后了大约六个月),我还没有看到该团队关于屏幕共享的任何内容。

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

答案 4 :(得分: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

答案 5 :(得分:0)

navigator.mediaDevices.getDisplayMedia(constraint).then((stream)=>{
// todo...
})

现在您可以这样做了,但 Safari 在音频方面与 Chrome 不同。