【问题标题】:Accomplish screen sharing using WebRTC使用 WebRTC 实现屏幕共享
【发布时间】:2013-07-09 07:25:21
【问题描述】:

我需要使用 WebRTC 实现屏幕共享。我知道 WebRTC 支持共享选项卡内容,但我需要共享整个屏幕。 我正在考虑的一个解决方案是经常截图并使用WebRTC数据通道将图像传输给对方。每次收到新图像时,对方都会更新图像。

这可以实现吗?特别是我想知道是否可以使用 WebRTC 数据通道传输图像?

提前谢谢你。

【问题讨论】:

  • 您可以通过 DataChannel 传输图像,但更大的问题是从 JavaScript 沙箱内部捕获屏幕。我怀疑如果没有某种浏览器扩展,这是不可能的。

标签: video-streaming webrtc screensharing


【解决方案1】:

getUserMedia 支持整个屏幕的屏幕共享,而不仅仅是标签内容。

我已经完成了一个截屏演示(使用强制约束 chromeMediaSource: 'screen'),它将流通过管道传输到 RTCPeerConnection:https://simpl.info/screencapture

chrome.tabCapture API 获取标签内容,但这当然不是您想要的:例如 here(尽管代码现在已损坏)。

编辑:向链接添加 HTTPS:这是截屏所必需的。

【讨论】:

  • 感谢您的回答。 getUserMedia 确实是我需要的。但是为了在本地测试它似乎我必须安装一些 HTTPS 服务器对吗?
  • 这种方法能达到60FPS吗?我试过了,但似乎远非理想。
  • 现在有没有办法获得屏幕共享,因为 chrome 在最新版本中没有启用屏幕共享的标志。
  • 屏幕截图现在可用于 Android 上的 Chrome 浏览器。请参阅simpl.info/sc 上的演示,以及paul.kinlan.me/screen-recording-with-getUserMedia-and-WebRTC 上 Paul Kinlan 的文章。
【解决方案2】:

屏幕共享可通过 Chrome 中的实验性 getUserMedia 约束 (not yet available in Firefox) 获得。

您需要先在chrome://flags 中启用名为Enable screen capture support in getUserMedia() 的标志。

这里有一个很好的例子来说明如何捕获屏幕:https://html5-demos.appspot.com/static/getusermedia/screenshare.html

【讨论】:

  • 谢谢,很好的例子。但是当我将 html 内容复制到我的本地 html 文件时,它不起作用。看来我需要安装 HTTPS 服务器。
  • Enable screen capture support 标志已从 Chrome 中移除
  • 是否有更新的截屏方式引入?
  • 有人知道是否有替换标志或如何通过 getUserMedia() 启用屏幕捕获?
【解决方案3】:

看看这个Chrome扩展,它实现了桌面共享,很不错。 https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/

【讨论】:

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