关于用Electron集成问题

你好问一下,我可以使用 electron中使用web SDK吗,而不使用Electron SDK调用视频

这是一个 electron demo based on web,你参考下哈:

恩,我看咱们这个demo了,我也在自己的工程里构建了electron,使用的是最新版的electron,构建的是76版本的chrome内核,但是有一个问题,发现在采集屏幕共享的时候抛出异常了,Permission denied权限错误,这个问题有遇到过,具体是哪里的原因,可以绕过去吗,在web端是OK的

这个报错是因为你没有给屏幕录制的权限,理论上而言没法绕过去的,必须得给权限

这个权限如何给呢,web端也没有关于屏幕共享的权限啊,只有摄像头的权限

麻烦请提供一下完整的 Console log,我们排查一下。

具体的版本号也给一下哈。

const win = new BrowserWindow({
  width:1280,
  height:720,
  webPreferences: {
    nodeIntegrationInWorker: true
  }
})

你把 nodeIntegrationInWorker 字段设置为 true 再试试看?


electron版本为6.0.12最新版,nodeIntegrationInWorker已设为true,依然报这个错,上图是报错信息

嗯嗯,请保存完整的 Console log 文件给我们哈

恩,怎么保存完整console.log,都要提供哪些log,我就是调用createStream screen,然后就进catch了

如果是 chrome 浏览器,右键点击任意一条日志,选择 save as…,即可保存完整日志文件到指定的地方。

localhost-1570856397287.log.zip (5.0 KB)
这是产生的全部日志,你看一下

收到

麻烦了,我查了下网上的资料,没找到相关的说明,麻烦您帮忙看看,谢谢了

哦,也就是说确实不用用web端的调用,得用electron提供ID,好的我试试,谢谢

好的,如果还有问题及时联系


我调用了下,发现报这个错误,是什么原因呢

实在不好意思是我弄错了。我这边刚才测试了一下,electron 有两种方法实现屏幕共享:
1、如果需要自己写布局,才需要调用 AgoraRTC.getScreenSources 方法,如果调用了这个方法却没有自己写布局就会出现你图中的错误;
2、如果可以不需要自己写布局,那就直接调用 createStream 不传 sourceId 就可以了。也就是说,electron 可以直接通过 createStream 方法来进行屏幕共享的。前面我讲错了,不是要把 nodeIntegrationInWorker 设为 true,而是要把 nodeIntegration 设为 true,这样才有出现弹窗提示需要给权限。
你这么设置一下哈:

const win = new BrowserWindow({
  width:1280,
  height:720,
  webPreferences: {
    nodeIntegration: true
  }
})

好像可以了,我看通过这个createStream弹出的窗口也是咱们SDK里绘制的UI吧,不是chrome的iframe层,谢谢了
还有我没太理解,为啥调用 AgoraRTC.getScreenSources 会报错呢,你说的自己布局是怎么布局呢,在调用AgoraRTC.getScreenSources之前还需要调用什么吗