Skip to content

Interactive Control.zh CN

megumiss edited this page Aug 14, 2026 · 1 revision

互动控制

在总览页的画面预览卡片里直接操作游戏:点击 控制 按钮后,JPEG 轮询预览会替换为 ws-scrcpy 实时视频流,可以在浏览器里点击、拖拽、滑动游戏画面,右侧还带有控制栏(电源、音量、导航键、截图、全屏、键盘等)。

一、使用限制

使用前请确认满足以下全部条件,否则控制按钮会处于禁用状态(鼠标悬停可查看原因):

限制 说明
仅模拟器实例 客户端平台必须为 ADB (模拟器),PC 端(Windows)实例不可用
Serial 不能为 auto ws-scrcpy 按固定 Serial 连接设备,模拟器 Serial 必须手动填写为固定值(如 127.0.0.1:16384192.168.x.x:5555
需要自行部署 ws-scrcpy NKAS 不内置该服务,部署方式见下文
网络要求 NKAS 后端所在机器必须能访问 ws-scrcpy 地址(页面与静态资源经后端代理转发);同时浏览器也要能直连该地址(视频流 WebSocket 由浏览器直连,使用反向代理时需支持 WebSocket 转发)

其他注意事项:

  • 互动模式期间,画面预览的 JPEG 轮询会暂停,退出控制后恢复。
  • 码率 / 帧率设置只在建立连接时生效,修改后需要退出控制再重新进入。
  • 在画面右上角 ⋮ 菜单里手动保存过的画质设置优先级高于 NKAS 下发的初始设置。
  • 脚本运行中手动操作游戏可能干扰脚本的画面识别,请谨慎使用。

二、部署 ws-scrcpy

NKAS 适配的是 n1n3b1t/ws-scrcpy 这个分支,可以直接使用 Docker 镜像 megumiss/ws-scrcpy 部署。

1. docker-compose 模板

version: '3.8'

services:
  ws-scrcpy:
    image: megumiss/ws-scrcpy:latest
    container_name: ws-scrcpy
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - ./config.yaml:/app/config.yaml:ro
      - /dev/bus/usb:/dev/bus/usb
      - /run/udev:/run/udev:ro
      - ./adb-keys:/root/.android
    device_cgroup_rules:
      - 'c 189:* rwm'
    environment:
      - NODE_ENV=production
    # 容器内 adb 自动重连循环:按需修改为你的模拟器/redroid 地址
    command: >
      sh -c "
      adb start-server;
      (
        while true; do
          adb connect 192.168.31.216:5555 > /dev/null 2>&1;
          sleep 60;
        done
      ) &
      npm start
      "

模板说明:

  • 网络:通过 ports 把容器的 8000 端口映射到宿主机,访问地址为 http://<宿主机IP>:8000。跨网段或有特殊需求时也可以改用 macvlan 等网络模式,参考 Docker 文档。
  • USB 相关挂载/dev/bus/usb/run/udevdevice_cgroup_rules)只对 USB 直连设备有必要;纯网络 adb(redroid、模拟器)可以删除这几项。
  • adb-keys:挂载 adb 密钥目录,避免设备上反复弹授权框;首次连接仍需在设备上确认授权(勾选"始终允许")。
  • 自动重连command 里的循环每 60 秒对列表中的设备执行一次 adb connect,防止 redroid/模拟器重启后掉线,按实际设备增删地址。
  • config.yaml:ws-scrcpy 自身配置(端口、认证等),可参考项目仓库说明;不需要可去掉该挂载。

2. 验证部署

浏览器打开 http://<宿主机IP>:8000,能看到设备列表即部署成功。设备必须出现在列表里(即容器内 adb devices 可见),NKAS 的互动控制才能连上。

💡 也可以用 Nginx 等反向代理把 ws-scrcpy 暴露到统一域名/端口(可顺带加 Basic 认证),配置里直接填反代地址即可,但反代必须支持 WebSocket 升级。

三、配置 NKAS

主侧边栏进入 实例 → 选择实例 → NKAS(⚙️ 图标)分组 → 模拟器,在页面底部找到 互动控制 分组:

设置项 说明
ws-scrcpy 地址 ws-scrcpy 服务的访问地址,如 http://192.168.1.100:8000 或反代地址 https://scrcpy.example.com,留空则关闭互动模式
视频码率 初始连接的视频码率(bps),默认 16000000。码率越高画面越清晰,带宽占用越大;局域网内保持默认即可
视频帧率 初始连接的帧率上限,默认 60

💡 初始分辨率上限固定为 1280,码率/帧率之外的画质参数可在控制画面右上角的 ⋮ 菜单中调整。

四、使用说明

  1. 进入实例的 任务总览 页,展开右侧的 画面预览 卡片。
  2. 点击卡片头部的 指针图标(控制)进入互动模式,画面会切换为实时视频流。
  3. 直接用鼠标点击、拖拽操作游戏;点 侧栏图标 可以收起/展开右侧控制栏。
  4. 再次点击指针图标退出互动模式,恢复普通预览。

Clone this wiki locally