Skip to content

远程控制与串流

LCXL Remote Desk 通过 WebRTC 串流远端屏幕与音频以实现超低延迟,并提供完整的键鼠控制。

视频编码

采集引擎支持跨多种编解码器的软硬件编码:

编解码器后端
H.264X264 / OpenH264
VP8 / VP9libvpx
AV1SVT-AV1

采集后端:Windows(DXGI / WGC)、Linux(X11 / Wayland portal + PipeWire)。Linux 会按当前桌面会话筛选后端:原生 X11 会话只展示 X11,Wayland 会话只展示 ScreenCast Portal,避免把 XWayland 误认为完整桌面采集能力。

控制端会为每条远程桌面连接解析采集后端、显示器、编码器、帧率、画质、鼠标指针和脏矩形设置,这些选择不再回写被控端配置文件。提交后无需刷新页面:被控端会原地应用、只重建受影响的媒体管线,或在 wire codec 变化时自动建立新的 WebRTC 会话;对话框会展示实际生效方式。如果重建前控制端持有远程控制权,它会在新的 PeerConnection 连接后重新申请;旧授权不会跨会话 epoch 复制,因此“询问”策略仍会在被控端重新弹出确认。

替换 PeerConnection 前,控制端会释放仍按住的按键与鼠标按钮。剪贴板和白板交互会暂停到远程控制重新获批;已经开启的控制端麦克风会直接挂到新的音频 transceiver,不会再次申请浏览器采集权限。被控端系统音频会随媒体会话中断并重新启动。已挂载的虚拟屏在连接移交期间保持挂载,但独占模式会在控制权尚未获批时退出,确保本地授权界面可见;重新授权后可再次进入。

选择自动时,被控端会按固定顺序,从「已安装、声明支持当前显示器分辨率、且控制端可解码」的编码器中选出第一个;只支持运行时探测的编码器不会被自动选中。显式选择某个编码器时则严格采用该选择,不会静默替换成另一种实现或编解码器。

分辨率变化与编码器上限

如果所选编码器无法接收当前采集尺寸,被控端会在编码前停止,而不是展示空白画面或逐帧重复失败。浏览器会显示当前分辨率、已知的兼容编码器,并提供更换编码器或在调整被控端显示模式后重试的入口。会话中途改变分辨率也执行同一检查;恢复到受支持的显示模式后,若平台没有主动报告模式恢复,需要点击「重试视频」。

该流程不会在 CPU 侧缩放帧,避免 4K BGRA 帧缩放带来的高内存带宽开销,并保持采集桌面几何尺寸准确。

音频

系统音频用 Opus(libopus)采集并编码。Web 控制端会明确请求以立体声接收 Opus;实际声道分离效果仍取决于被控端采集源和控制端输出设备。采集后端:Windows(WASAPI)、Linux(ALSA / PipeWire)。

对于具备能力的桌面被控端,新浏览器偏好默认开启“捕获系统音频”。这只是控制端的请求:被控端另有独立的“系统音频采集”权限,可设为允许、询问或拒绝;临时协助授权还可以进一步收紧。拒绝或超时只会关闭被控端系统音频,视频、输入和控制端麦克风上行仍可继续。Android 被控端目前会明确报告不支持系统音频采集。

控制端会常驻展示实际音频状态(启动中、已启用、已拒绝、失败或关闭)。被控端复用现有远程访问状态卡,仅在音频确实通过 daemon 输出门禁时增加系统音频 badge。该功能只通过 WebRTC 实时传输音频,不录制、不持久化;“被控端系统音频”和“控制端麦克风上行”是两个独立功能。

浏览器偏好

使用已登录 owner 身份访问时,Web 控制端按“当前控制端账号 + 目标设备”把设备设置保存在当前浏览器中,因此个人视图和组织视图访问同一账号下的同一设备会复用设置;两个自适应编码开关按控制端账号保存。偏好不会同步到其他浏览器,清除站点数据后会删除。临时协助码/grant 会话不会读取或写入 owner 的已保存偏好。

输入

鼠标与键盘输入通过专用数据通道注入到被控设备。在 service-daemon 模式下,注入运行于用户桌面会话内——见启动模式

准备被控端

被控端首页会集中显示接受桌面会话前需要完成的本机操作。Windows 的“安装服务”入口保留在这里;macOS 会分别显示“屏幕录制”和“辅助功能”状态,并可从同一区域发起系统权限申请。

在已登录的 Wayland 桌面中,请先由被控端本机用户点击“启用 Wayland 远程访问”,再从其他设备连接。申请范围由被控端输入模式决定:

  • noneuinput 只申请屏幕共享;
  • portal 以及 Wayland 下的 auto 申请屏幕共享、键盘和指针控制。

Portal 选择器归本地桌面所有,远程控制端不能打开或代替本机用户确认。在所需屏幕/输入分量 Ready 前,远程请求会立即返回“请先准备被控端”,不会等待选择器,也不会进入 WebRTC/ICE 重试。

被控端会在多次远程连接之间保持本次 Portal 会话。桌面支持持久恢复且安装包具备稳定应用身份时,下次启动会尝试恢复;否则首页会明确显示授权仅在本次运行有效。撤销权限、Portal backend 重启或所选来源失效后,状态会回到“需要重新授权”。

长驻会话会固定 Portal 选择器中选定的显示器。“启用输入控制”和“更换共享屏幕/重新授权”都会创建替代 Portal 会话、重新打开本机系统授权框,并先停止当前媒体和输入流水线;完成授权后需要重新连接。远程连接不能触发这两个动作,也不能把仅屏幕授权隐式升级成输入控制。

这里的 Wayland 支持范围仅限已经登录的图形用户会话,不包含 GDM/登录界面、无头主机或没有图形用户会话的无人值守场景。

显示器选择

desk.video_device_name 选择要采集的显示器(如 Windows 上的 \\.\DISPLAY1)。首次连接时,浏览器会自动选择第一个包含可用显示器的采集模式,并优先选择桌面原点处的显示器;已保存的模式或显示器失效时会纠正到该可用默认值,并在对话框中说明变更。

调优建议

  • 降低 video_fps(如 30)以减少 CPU 与带宽。
  • 增大 video_quality 数值可减小码率,减小则画质更好。
  • 屏幕大体静态时启用 enable_dirty_rect