ATX openatx/uiautomator2 快速截图

codeskyblue · September 10, 2019 · Last by codeskyblue replied at November 08, 2019 · 2831 hits

背景

今天看到有人在这篇古老的文章中 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 系列] 安卓手机的快速截图 中提及了此贴 10 Sep 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 就好了。旋转的问题

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up