【问题标题】:Python - AndroidViewClient take snapshots in high FPSPython - AndroidViewClient 以高 FPS 拍摄快照
【发布时间】:2018-11-14 14:08:00
【问题描述】:
我想在 Python 上使用 AndroidViewClient 以 60 FPS 的速度拍摄我的设备的快照,因此我在循环中使用了函数 device.takeSnapshot(reconnect=True) 来执行此操作。然而,这个功能的时间消耗似乎是 0.5 秒左右,这给了我 2 FPS。我认为重新连接是它让它变长的原因。那么为什么设备在拍摄一张快照后会自动断开连接呢?有没有办法保持连接?有没有其他方法可以提高时间消耗并获得更高的 FPS?
【问题讨论】:
标签:
android
python-2.7
androidviewclient
【解决方案1】:
虽然AndroidViewClient/culebra 的目标不是成为screenrecorder,但我进行了这样的测试
device, serialno = ViewClient.connectToDeviceOrExit()
t = time.time()
for s in range(60):
device.takeSnapshot(reconnect=True)
t1 = time.time()-t
print "t={} secs r={} screenshots/sec".format(t1, 60/t1)
在高速手机 (Pixel 3) 上,它可以在 15 秒或 4 FPS 内截取 60 张屏幕截图。
另外,考虑到屏幕尺寸为 1080x2160,因此需要传输大量字节。
您可以查看takeSnapshot() 源代码,如果您想加快速度,可以删除或更改某些部分,例如可以推迟创建 PIL Image。