Loading...

是否支持Electron环境下共享内容?

问题描述

Electron是一个跨桌面平台开发框架,内部基于Chromium浏览器内核实现渲染内容,所以理论上,Electron项目也支持集成WebRTC SDK,实现音视频能力;

但因为 Electron 未实现浏览器支持的 WebRTC 标准的 getDisplayMedia 接口,所以网页中包含了 WebRTC 屏幕分享相关的逻辑,将无法在 Electron 中像普通浏览器一样正常使用 XY Web SDK 进行屏幕分享。

那么如何在 Electron 中使用 XY Web SDK 如何进行屏幕分享呢?

解决办法

方式一

推荐使用小鱼易连​​XY Electron SDK​​,支持Windows和Mac平台,由于底层采用小鱼C++ SDK实现,所以可以实现堪比客户端一样的会议表现;

方式二

1、调用stream模块的​​getElectronContentSource()​​方法获取 Electron 平台上可分享的输入源列表;

// desktopCapturer来源于electron模块
const result = await stream.getElectronContentSources(desktopCapturer, ['window', 'screen']);

2、通过第一步获取到的输入源列表,选择合适的分享源资源id信息;

3、通过stream模块的​​createElectronContentStream()​​方法创建Electron分享视频流,并执行publish推送操作:

const result = await stream.createElectronContentStream(resourceId);

// 创建分享屏幕stream成功
if (result.code === 518) {
// 监听开始分享操作事件
stream.on('start-share-content', () => {
// 推送Content视频流
client.publish(stream, { isShareContent: true });
})

// 监听停止分享操作事件
stream.on('stop-share-content', () => {
stopShareContent();
})
} else {
message.info(result.msg || '分享屏幕失败');
}
提示

1、在高版本Electron下,可能无法在渲染进程获取desktopCapturer模块,所以需要在主进程下获取所有可用的资源列表内容,然后传递到渲染进程进行选择;

2、高版本Electron下,需要自行处理设备采集屏幕授权操作;

意见反馈