强大的手机屏幕镜像软件, 手机投屏到电脑, 可以通过电脑操作手机玩游戏 (开源免费) scrcpy QtScrcpy

之前用"TC Games"通过电脑控制手机玩游戏, 但是很多功能需要会员,我肯定是不会冲会员的!!!

我就想他后面的原理是什么, 虚拟机? 还是其他? 让我们动起来吧

每次连接都会提示 允许远程调试, 应该是和adb有关, 我很多都不清楚,所以我问了一下chatGPT 相关的, chatGPT也给我了一些答案和线索, 最后发现了 几个强大且免费的软件 scrcpy 和 QtScrcpy,

file
file

scrcpy

是一个免费的开源屏幕镜像程序,它允许以Windows 、 macOS或Linux台式计算机查看并控制 Android 设备,可轻松实现快速的屏幕镜像。 [2]该软件目前由 Genymobile公司 [3]开发,这家公司还开发了 Android 模拟器 Genymotion

GitHub地址

https://github.com/Genymobile/scrcpy

图形界面的scrcpy 有下面三个, 我最后选择了QtScrcpy来完成我的目标,"在电脑上面操作手机玩游戏"

QtScrcpy

https://github.com/barry-ran/QtScrcpy

guiscrcpy

https://github.com/srevinsaju/guiscrcpy

scrcpy-gui

https://github.com/Tomotoes/scrcpy-gui

QtScrcpy

QtScrcpy 可以通过 USB / 网络连接Android设备,并进行显示和控制。无需root权限。
同时支持 GNU/Linux ,Windows 和 MacOS 三大主流桌面平台
专注于:

  • 精致 (仅显示设备屏幕)
  • 性能 (30~60fps)
  • 质量 (1920×1080以上)
  • 低延迟 (35~70ms)
  • 快速启动 (1s 内就可以看到第一帧图像)
  • 非侵入性 (不在设备上安装任何软件)

可以通过USB,tcp连接设备, 延迟低,玩游戏不卡, 具体怎么操作呢

下载:

https://github.com/barry-ran/QtScrcpy/releases

运行, 解压既可以玩

解压后 打开 QtScrcpy.exe
file

设置:

  • 比特率: 8/16/32 Mbps 数字越大越清晰,但是延迟也可能会变高
  • 最大尺寸: 选择大点的
  • 通过usb插上手机, 然后点击 "启动服务" ,接着点击 "刷新设备列表" ,就可以看到设备, 双击 上面 就可以 打开窗口
    file
    file

接下来设置按键, 以便在游戏中使用键盘鼠标

感谢开发者,已经写好了功能,我们只需要修改一下配置文件就可以了
软件目录下面的 keymap 文件夹中, 是映射按键的配置文件, 我们可以根据自己的需要进行修改

{
    "switchKey": "Key_QuoteLeft",
    "mouseMoveMap": {
        "startPos": {
            "x": 0.57,
            "y": 0.26
        },
        "speedRatioX": 8,
        "speedRatioY": 8,
        "smallEyes": {
            "comment": "小眼睛",
            "type": "KMT_CLICK",
            "key": "Key_Alt",
            "pos": {
                "x": 0.3,
                "y": 0.5
            },
            "switchMap": false
        },
        "speedRatio": 10
    },
    "keyMapNodes": [
        {
            "comment": "方向盘",
            "type": "KMT_STEER_WHEEL",
            "centerPos": {
                "x": 0.18,
                "y": 0.73
            },
            "leftOffset": 0.1,
            "rightOffset": 0.1,
            "upOffset": 0.27,
            "downOffset": 0.2,
            "leftKey": "Key_A",
            "rightKey": "Key_D",
            "upKey": "Key_W",
            "downKey": "Key_S"
        },
#上面的不建议删除,下面的可随意
        {
            "comment": "自动跑",
            "type": "KMT_CLICK",
            "key": "Key_Equal",
            "pos": {
                "x": 0.76,
                "y": 0.31
            },
            "switchMap": false
        },
        {
            "comment": "跳",
            "type": "KMT_CLICK",
            "key": "Key_Space",
            "pos": {
                "x": 0.92,
                "y": 0.7
            },
            "switchMap": false
        },

        {
            "comment": "背包",
            "type": "KMT_CLICK",
            "key": "Key_Tab",
            "pos": {
                "x": 0.06,
                "y": 0.9
            },
            "switchMap": true
        },

        {
            "comment": "趴",
            "type": "KMT_CLICK",
            "key": "Key_Z",
            "pos": {
                "x": 0.9,
                "y": 0.9
            },
            "switchMap": false
        },
        {
            "comment": "蹲",
            "type": "KMT_CLICK",
            "key": "Key_C",
            "pos": {
                "x": 0.825,
                "y": 0.92
            },
            "switchMap": false
        },
        {
            "comment": "换弹",
            "type": "KMT_CLICK",
            "key": "Key_R",
            "pos": {
                "x": 0.76,
                "y": 0.86
            },
            "switchMap": false
        },
        {
            "comment": "捡东西1",
            "type": "KMT_CLICK",
            "key": "Key_F",
            "pos": {
                "x": 0.50,
                "y": 0.78
            },
            "switchMap": false
        },

        {
            "comment": "换枪1",
            "type": "KMT_CLICK",
            "key": "Key_Q",
            "pos": {
                "x": 0.50,
                "y": 0.88
            },
            "switchMap": false
        },
        {
            "comment": "手雷",
            "type": "KMT_CLICK",
            "key": "Key_4",
            "pos": {
                "x": 0.65,
                "y": 0.89
            },
            "switchMap": false
        },
        {
            "comment": "开枪",
            "type": "KMT_CLICK",
            "key": "LeftButton",
            "pos": {
                "x": 0.82,
                "y": 0.76
            },
            "switchMap": false
        },
        {
            "comment": "开镜",
            "type": "KMT_CLICK",
            "key": "RightButton",
            "pos": {
                "x": 0.85,
                "y": 0.55
            },
            "switchMap": false
        },
        {
            "comment": "道具1",
            "type": "KMT_CLICK",
            "key": "Key_1",
            "pos": {
                "x": 0.31,
                "y": 0.88
            },
            "switchMap": false
        },
        {
            "comment": "道具2",
            "type": "KMT_CLICK",
            "key": "Key_2",
            "pos": {
                "x": 0.36,
                "y": 0.88
            },
            "switchMap": false
        },
        {
            "comment": "道具3",
            "type": "KMT_CLICK",
            "key": "Key_3",
            "pos": {
                "x": 0.41,
                "y": 0.89
            },
            "switchMap": false
        },
        {
            "comment": "道具4",
            "type": "KMT_CLICK",
            "key": "Key_E",
            "pos": {
                "x": 0.90,
                "y": 0.375
            },
            "switchMap": false
        },
        {
            "comment": "跳过等待",
            "type": "KMT_CLICK",
            "key": "Key_X",
            "pos": {
                "x": 0.50,
                "y": 0.96
            },
            "switchMap": false
        }
    ]
}

比如上面这个是cod手游的简单配置文件,
编辑好后,没有错误,我们可以在软件点击"刷新脚本"
file
然后再点击后面的应用脚本, 当出现提示, 就说明我们的映射文件正常加载了, 如果提示其他,说明文件内容有误,

"Script updated, current keymap mode:normal, Press ~ key to switch keymap mode"

点击 ~ ,则会绑定键盘, 解绑则再次按下 ~

如何设置值

举个例子, 手机中游戏界面那个广告的 关闭, 点击一下, 在 软件中就会显示当前点击的坐标, 我们把要绑定的按键设置成对应的值就可以了,以后按对应的按键,相当于触摸了屏幕的对应位置

file

假如这里在屏幕上面的坐标为 x: 0.8 , y: 0.6 . 我们需要绑定到 按键 "K"

            "comment": "绑定的按键K",
            "type": "KMT_CLICK",
            "key": "Key_K", #这里K要大写
            "pos": {
                "x": 0.8,     #这里对应获取到的值
                "y": 0.6  #这里对应获取到的值
            },
            "switchMap": false
        },