- 文档首页
实时音视频
实时音视频
开发指南
屏幕共享
Electron 架构下通过 Web SDK 实现屏幕共享
屏幕共享
Electron 架构下通过 Web SDK 实现屏幕共享
Electron 架构下通过 Web SDK 实现屏幕共享
用户共享屏幕或窗口时,可以将屏幕内容以视频方式发送给其他用户,提高沟通效率。本文介绍在 Electron 框架下,使用 Web SDK 实现屏幕共享功能。
适用场景
前提条件
- 你已经集成 Web SDK V4.63,实现了基本的音视频通话。
#{style="margin: auto"}#
配置 ELectron 环境选项
contextIsolation: false,
- 如果你使用的 Electron 版本高于 17,为了确保能获取到屏幕共享源,必须在主进程文件中增加以下代码:
const { ipcMain, desktopCapturer } = require("electron");
ipcMain.handle("DESKTOP_CAPTURER_GET_SOURCES", (event, opts) => desktopCapturer.getSources(opts));
【可选】设置屏幕流参数
若设置的参数浏览器不支持,RTC SDK 按照浏览器支持的参数范围进行采集和编码,并通过回调 onLocalVideoSizeChanged 通知实际参数。
setScreenEncoderConfig(config:{
不同场景下建议的参数设置如下:
在开启屏幕采集之后,参数只能下调,不能动态调整至更高参数。若要上调,则需重新采集。
开始采集和分享屏幕流
说明:仅支持在 Windows 上共享音频,且音频为设备音频,不支持共享指定应用的音频。
自定义弹窗
你可以自行绘制选择共享屏幕源的弹窗,参考以下步骤。
- 根据共享源列表信息,包括共享源名称和缩略图,用 HTML 和 CSS 绘制选择弹窗。
默认弹窗
你可以使用 SDK 提供的共享屏幕源的默认选择弹窗,参考以下步骤。
await IRTCEngine.startScreenCapture({
systemAudio: "include",
await IRTCEngine.publishScreen(MediaType.AUDIO_AND_VIDEO);
await IRTCEngine.unpublishScreen(MediaType.AUDIO_AND_VIDEO);
订阅和播放屏幕流
当主持人共享屏幕时,摄像头流将切换为小窗展示,因此,建议订阅端将主持人的摄像头流设置为较小分辨率的视频流。具体参看推送多路流。 IRTCEngine.on(IRTCEngine.events.onUserPublishScreen, async ({ userId, mediaType }) =>{
await IRTCEngine.subscribeScreen(userId, mediaType)
<div id="player-wrapper-${userId}" class="player-wrapper re-player">
<p class="player-name">${userId}</p>
$('#player-list').append(player);
IRTCEngine.setRemoteVideoPlayer(VERTC.StreamIndex.STREAM_INDEX_SCREEN,{
renderDom: `player-wrapper-${userId}`,
renderMode: VERTC.VideoRenderMode.RENDER_MODE_HIDDEN,
最近更新时间:2026.08.04 14:52:23