V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
MissTang
V2EX  ›  问与答

好奇问一下 scrcpy 是如何做到 p2p 远程投屏的?

  •  
  •   MissTang · 48 天前 · 1125 次点击
    这是一个创建于 48 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不是广告,就是想了解到底是怎么实现的

    有没有类似的开源代码 测了一下确实可以 把安卓设备跨网投屏,还可以操作 用的是 scrcpy

    laixi.app 应该是用易语言写的?

    laixi

    20 条回复    2024-09-15 11:21:57 +08:00
    MissTang
        1
    MissTang  
    OP
       48 天前
    想用类似这个技术来做云手机出租
    AoEiuV020JP
        2
    AoEiuV020JP  
       48 天前
    scrcpy 本身就是开源的,
    https://github.com/Genymobile/scrcpy
    dsgvsn
        3
    dsgvsn  
       48 天前
    只要有 root ,让 adb 监听某个端口,然后内网穿透或者 ipv6 之类的就可以了
    MissTang
        4
    MissTang  
    OP
       48 天前
    他这个不需要 root 插上数据线就可以
    所以 应该是修改了 scrcpy 添加上了打洞?
    tool2dx
        5
    tool2dx  
       48 天前
    scrcpy 是用 adb 协议推了一个服务端 jar 到手机上运行,不断的抓屏打包成 H264/H265 ,通过 adb 协议发回到电脑。

    但其实代码不复杂,大部分国内厂商都魔改过,去掉了 adb 协议,直接走 tcp 。这样手机都不用开 adb 。
    MissTang
        6
    MissTang  
    OP
       48 天前
    @AoEiuV020JP 是的 开源的 但是他仅限于本机 USB 连接或者同一个局域网
    MissTang
        7
    MissTang  
    OP
       48 天前
    @tool2dx 连 ADB 都不需要打开吗? 那如何把这个 jar 推送到手机运行
    zbinlin
        8
    zbinlin  
       48 天前
    我自己用,Wireguard 组网,手机 `adb tcp ip 5555`,在电脑上先用 `adb connect` 连上,然后使用 scrcpy 操作。
    MissTang
        9
    MissTang  
    OP
       48 天前
    @zbinlin 我是想做个 p2p 方案 用于 云手机出租业务
    他这个 2 端都没有组网 两端只需要安装他的软件就可以
    想找找类似的开源项目看看
    tool2dx
        10
    tool2dx  
       48 天前
    @MissTang adb 推送一次 scrcpy-server.jar 就可以了,github 有魔改的版本是让你自己复制 jar 并运行。

    官方视频流都走 adb 协议,不是很合理。最好还是走 tcp 。
    MissTang
        11
    MissTang  
    OP
       48 天前
    @tool2dx 也就是说 还是需要 USB 调试权限,先推送一次 然后再关闭 USB 调试
    但是 如果关闭 USB 调试 那会自动结束掉 scrcpy-server.jar 的进程吧?
    zbinlin
        12
    zbinlin  
       48 天前
    @MissTang 两端安他的软件不也类似组网的
    MissTang
        13
    MissTang  
    OP
       48 天前
    @zbinlin 安装目录下看到了 kcp.dll
    应该是 UDP 打洞了
    LLaMA2
        14
    LLaMA2  
       48 天前
    不需要 root,手机用数据线插电脑

    scrcpy 可以直接使用 adb 连接到手机

    adb 本身与可以使用 tcp 连接

    usb 接口又可以使用网络 usb 完成映射
    kimzn33251
        15
    kimzn33251  
       47 天前
    “把安卓设备跨网投屏,还可以操作 用的是 scrcpy”
    怎么确定是用的 scrcpy ?有什么痕迹么
    非 root 方案就是录屏加推流,touch 事件再开个通道传输
    云手机方案现在很成熟了,直接上机箱的
    MissTang
        16
    MissTang  
    OP
       47 天前
    @kimzn33251 是 scrcpy 因为安卓进程列表里有 scrcpy 的包名
    MissTang
        17
    MissTang  
    OP
       47 天前
    @kimzn33251 录屏的话,会容易被杀后台吧
    cd605426287
        18
    cd605426287  
       3 天前
    @MissTang scrcpy 启动的是有 adb 权限的进程,抓的是 surface 的内容,不会被杀
    MissTang
        19
    MissTang  
    OP
       2 天前
    @cd605426287 通过 ADB 启动了 scrcpy 后
    再关闭 USB 调试功能
    scrcpy 还会处于运行状态吗?
    cd605426287
        20
    cd605426287  
       1 天前
    @MissTang 不行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:20 · PVG 03:20 · LAX 12:20 · JFK 15:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.