以前如果想在Chrome中使用JS进行全屏幕/应用程序共享(navigator.getDisplayMedia 或 navigator.mediaDevices.getUserMedia),需要额外安装一个插件。
好消息是从Chrome 70.0.3531.0开始,已经不再需要安装额外的插件就可以支持全屏幕/应用程序共享了。可以看这里:https://groups.google.com/forum/#!topic/discuss-webrtc/Uf0SrR4uxzk
而如果你的产品是基于CEF作为容器供用户来使用,那么就最好升级到与Chromium 70的正式版本:3538,于2018年9月发布。但是不幸的是,不知道出于什么原因,这个版本只提供了全屏幕共享,没有提供应用程序共享功能。那怎么办呢?我们只有对照Chromium的源码,在CEF中增加关于应用程序共享的部分,然后再自己编译一份出来。
编译好的支持应用程序共享的版本可以在我的博客置顶帖中找到下载。另外,修改的代码补丁,我在github上放了一份:
https://github.com/epubcn/cef_enhancement/tree/master/getDisplayMedia
注意只放了3578和3729的Windows和macOS版本,其他版本因没有需求就不做了。
注意,启动时需要增加以下两个启动参数(第二个参数在CEF的后续升级版本中将也不再需要):
–enable-media-stream
–enable-experimental-web-platform-features
然后在CEF中访问这个网址:https://webrtc.github.io/samples/src/content/getusermedia/getdisplaymedia/
点击下方的Start screen capture,就会发现弹出了选择全屏幕还是某个正在运行的应用程序的窗口了。
参考资料:
https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding
https://peter.sh/experiments/chromium-command-line-switches/