ATX openatx/uiautomator2 快速截图

codeskyblue · 2019年09月10日 · 最后由 codeskyblue 回复于 2019年11月08日 · 5930 次阅读

背景

今天看到有人在这篇古老的文章中 atx 快速截图 中有人留言,问有没有可能 1s 截 10 张图?这当然有可能啦!

Show you the code

打开命令行,确保安装好 Python3,手机通过数据线连接上电脑。

pip3 install uiautomator2
uiautomator2 init

此时手机上已经安装好了 minicap 和 atx-agent,并且其实 atx-agent 应该已经启动了。

pip3 install adbutils
pip3 install websocket_client

为了最快的截图速度,我们需要从 minicap 中的 socket 中拉数据。

import os
import time
import adbutils
import websocket

d = adbutils.adb.device()
lport = d.forward_port(7912)
ws = websocket.WebSocket()
ws.connect("ws://localhost:{}/minicap".format(lport))


os.makedirs("screenshots", exist_ok=True)

index = 0
start = time.time()
while True:
    data = ws.recv()
    if not isinstance(data, (bytes, bytearray)):
        print(data)
        continue
    with open("screenshots/%02d.jpg" % index, "wb") as f:
        f.write(data)
        index += 1
    print(index)
    if index > 100:
        break
duration = time.time() - start
print("Image per second: %.2f" % (100/duration))
ws.close()

我的这台锤子手机平均 30 张图/秒

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞
codeskyblue [atx 系列] 安卓手机的快速截图 中提及了此贴 09月10日 10:31

Cool,appium editions 写的也是从截图流服务(一个 apk 提供服务)里面拿的,速度 150ms per screenshot,没有 minicap 快啊

https://appiumpro.com/editions/83

Jacc 回复

appium 看来对 mjpeg 钟爱有佳啊,原来只在 iOS 看到了 mjpeg server,现在安卓也有了

厉害了,我的哥!

30ms 一张图 多大的分辨率呢? 这么快 我这至少也得一百多

为啥我手机横屏的时候截图,截取出来的图片是竖屏,而且只有一半呢?

lambov587 回复

现请求一下 localhost:7912/info/rotation 就好了。旋转的问题

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册