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 模式下,注入运行于用户桌面会话内——见启动模式。

浏览器全屏 ​

工具栏中的全屏按钮让整个远程桌面观看区域进入全屏,不需要申请远程控制权。浏览器缺少元素全屏接口时,改为页内最大化,保留工具栏和退出全屏入口;浏览器地址栏及系统界面可能仍然可见。已有接口被禁用,或进入、退出请求被拒绝时,页面会显示错误通知。被嵌入其他页面时,还需要外层页面允许全屏。

已停靠的工具栏在全屏时保持展示,并独立占位。点击退出全屏返回普通视图。页内最大化时,Escape 保持原来的远端按键或菜单关闭行为,请通过工具栏退出最大化。

工具栏布局 ​

用鼠标或单指拖动工具栏抓手。靠近观看区域的上、下、左、右边缘时,会显示停靠预览;松手后吸附,画面在剩余区域等比适配。上下停靠时横排,左右停靠时竖排。向画面内拖出并松手可恢复自由浮动,沿边拖动可调整停靠位置。

停靠后按钮保持展开。按钮超出空间时,沿工具栏方向滚动列表;鼠标滚轮也可滚动横向按钮。边缘出现的方向箭头表示还有按钮,点击箭头可翻动列表。抓手始终保留在列表外。右键抓手、聚焦后按 Shift+F10,或在触摸屏上长按抓手,也可直接选择位置。重连期间仍可调整本地布局、全屏或离开会话。

浏览器在本机保存工具栏位置及用户明确设置的浮动态展开/收起状态。同一站点中的账号和远端设备共用最近保存的布局,已打开窗口保持各自当前位置。刷新或重新打开后,会按当前屏幕和安全区恢复。这份布局偏好与账号/设备的连接设置分开。临时协助会话只保留当前页面的布局,不读取或写入已保存偏好。清除站点数据会重置布局,不会同步到其他浏览器或设备。

准备被控端 ​

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

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

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

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

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

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

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

显示器选择 ​

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

自适应分辨率 ​

配置对话框只提供一个「自适应分辨率」开关,作用于当前选择的显示器。选择 Windows 虚拟屏时,系统可按浏览器画面大小设置虚拟屏模式;选择支持此功能的 Windows 或 macOS 物理屏时,被控端从该屏实际支持的显示模式中选最合适的一档。本机物理屏也会短暂黑屏或改变布局,因此每块物理屏在当前浏览器会话首次选中时默认关闭,须主动开启。虚拟屏仍沿用原有浏览器偏好。

物理屏没有可用的更合适模式,或当前模式已经合适时,会保持当前分辨率,并显示「无需切换」提示。

自动调整只在恰好一个远程桌面连接时执行;其他连接仍可照常观看和控制。关闭开关会停止后续调整;可在配置中选择「恢复原分辨率」。最后一条连接退出时,被控端也会尽力恢复原模式。如果本机用户改了显示模式,远端自动调整会停止,不会覆盖本机选择。此功能不要求启用虚拟屏或安装其驱动;Linux、镜像显示器以及无法安全枚举模式的屏幕暂不支持。

调优建议 ​

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

移动端触摸与局部放大 ​

移动 Web、iOS 和 Android 提供两种模式,默认使用直接触控。工具栏中的“触摸与缩放”可切换模式和查看手势说明。

Web 工具栏仅在主要使用触摸输入的设备上显示“触摸与缩放、放大、缩小、适应屏幕”这组按钮。使用鼠标的桌面浏览器会隐藏这组按钮,窗口缩窄时也不会显示;全屏等通用操作仍保留。切换为鼠标输入时,触摸菜单会关闭,本地画面恢复为适应屏幕。

工具栏隐藏滚动条,避免展开和收起时高度变化。按钮超出可用空间时,可沿工具栏方向滚动,也可通过键盘切换焦点访问后面的按钮。

操作直接触控触控板
轻点点击手指所指位置点击本地光标所在位置
单指滑动按住左键拖拽,抬手释放相对移动光标
静止长按所指位置右键一次光标位置右键一次
开启“拖拽”后滑动直接触控无需此开关在原光标处按下,滑动并抬手释放

每次轻点只产生一次点击,连续两次轻点仍是远端双击。点击后短暂显示圆环,第二次双击显示双环,右键显示虚线双环。这是本地操作提示。

双指捏合可放大桌面局部,工具栏也提供放大、缩小和适应屏幕。最大倍率随源画面与屏幕尺寸计算,上限为 16 倍;放大不会改变远端显示器分辨率。放大后双指默认平移观看区域,可切换为远端滚动。未获得控制权时也能本地缩放和平移。

触控板箭头由控制端即时绘制。手动平移可能使光标离开画面,此时不点击看不见的目标;“定位光标”只移回观看区域。视频本身可能已包含远端系统鼠标,画面里仍可能出现第二个指针。

释放控制、会话结束、检测到连接中断或输入通道关闭时,客户端和被控端清理已按下的键盘键与鼠标按钮。连接检测仍有既有延迟;本轮不处理恢复连接时仍按住物理键或手指的特殊场景。