Python - AndroidViewClient делает снимки с высоким FPS - PullRequest
0 голосов
/ 04 ноября 2018

Я хотел сделать снимки моего устройства со скоростью 60 кадров в секунду, используя AndroidViewClient на Python, поэтому я использовал для этого функцию device.takeSnapshot(reconnect=True) в цикле. Однако оказалось, что потребление времени этой функцией составляет около 0,5 секунды, что дает мне 2 FPS. Я думаю, что повторное соединение это то, что делает его долгим. Так почему же устройство автоматически отключается после съемки одного снимка? Есть ли способ сохранить соединение? Есть ли другой способ улучшить потребление времени и увеличить FPS?

1 Ответ

0 голосов
/ 14 ноября 2018

Хотя это не AndroidViewClient / culebra , чтобы быть screenrecord er, я провел такой тест

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) он может сделать 60 снимков экрана за 15 секунд или 4 FPS . Кроме того, примите во внимание, что размер экрана составляет 1080x2160, поэтому для передачи требуется много байтов.

Вы можете взглянуть на исходный код takeSnapshot() и увидеть, что есть некоторые части, которые можно удалить или изменить, если вы хотите ускорить его, например, создание PIL Image, которое можно отложить.

...