Russian Qt Forum
Ноябрь 24, 2024, 02:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Android скриншоты  (Прочитано 13551 раз)
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« : Март 10, 2020, 22:22 »

Доброго времени суток!
Понадобилось делать скриншоты с экрана смартфона с целью анализировать их на компьютере.
Не проблема: с помощью QProcess и кода
Код:
adb exec-out screencap -p
получаю скриншот, всё ОК.
Но вот беда - на 1 снимок уходит больше 2 секунд. А хотелось бы хотя бы 4 кадра в секунду.
Как это можно сделать?
Телефон не рутованный, ставить какие-то дополнительные программы на него не хотелось бы.
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Март 11, 2020, 00:14 »

можно запустить несколько процессов параллельно
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #2 : Март 11, 2020, 01:54 »

Даже если это и получится (я проверю, конечно), то рассинхронизация в те же 2+ секунд никуда не денется. Самый первый то кадр всё равно придёт через 2+ секунд...
Хитрее надо как то.
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Март 11, 2020, 11:24 »

а если прямо из консоли выполнять эту команду, то нет задержки?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #4 : Март 11, 2020, 11:33 »

Есть, конечно. 2 секунды - достаточный срок, чтобы видеть даже "на глаз".
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Март 11, 2020, 13:44 »

значит, дело не в QProcess Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #6 : Март 11, 2020, 14:02 »

если делать screencap в сыром виде и не передавать по adb линку, то будет быстрее
если это медленно - надо искать замену screencap


Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #7 : Март 11, 2020, 14:32 »

если делать screencap в сыром виде и не передавать по adb линку, то будет быстрее
Вы про "создать скриншот внутри телефона и наружу передать файл"? Я так делал - выгода разве что в экономии около 0.5 секунд, убыток - в том, что можно довольно быстро затереть флешку телефона. Screencap то выдаёт картинку в бинарном виде, которую можно на компьютере просто создавать в /dev/shm
А какая может быть замена screencap?
« Последнее редактирование: Март 11, 2020, 14:41 от tux » Записан

qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #8 : Март 11, 2020, 15:55 »

1. можно хранить последние 100 от screencap (срипт должен чистить). а забирать потом
2. альтернативой может быть или имеющиеся скриншоттеры из gplay или свой написать )
2.1 даже используя быстрый скриншотер может быть затык в передачи png-файла по adb или wifi

Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #9 : Март 11, 2020, 16:35 »

1) Хранить X скриншотов и забирать их потом - всё равно будет задержка получения первого скришнота.
2) Написать свой - может быть вполне вариант, только я вряд ли без рута смогу получить доступ к фреймбуферу
3) Так затык и есть. В передаче хоть сырых данных, хоть в виде png

Или всё таки можно до фреймбуфера без рута добраться?
P.S. Есть ещё один вариант, конечно - использовать внешнюю web-камеру
« Последнее редактирование: Март 11, 2020, 16:37 от tux » Записан

qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #10 : Март 11, 2020, 17:02 »

вроде есть скришотеры без рута на gplay, но проверять не буду и не смогу т.к. рут у меня есть


Записан
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #11 : Март 11, 2020, 21:01 »

вроде есть скришотеры без рута на gplay, но проверять не буду и не смогу т.к. рут у меня есть
Та даже если и есть - что с того? Ставить что-то дополнительное на смартфон я не хочу, о чём и говорил в начале темы. Вопрос о фреймбуфере был чисто любопытным.
Пока что, вариант съёма скриншотов без установки дополнительных программ и без тормозов остаётся только web-камера.
Но, есть надежда, что кто-то что-то подскажет...
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Март 11, 2020, 22:11 »

а в чем состоит глобальная задача? может можно придумать другой подход?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
tux
Global Moderator
Бывалый
*****
Offline Offline

Сообщений: 404



Просмотр профиля
« Ответ #13 : Март 11, 2020, 23:01 »

а в чем состоит глобальная задача? может можно придумать другой подход?
Задача - простая. Имитировать человека, не прибегая ко всяким дополнительным программам на устройстве.
Попробую обьяснить. Лет 5 назад была подобная задача, правда на компьютере (for fun) - есть некое графическое приложение (сама ОС в данном случае не важна). Нужно в определенный момент времени кликать в определенной области экрана. Для чего - не так важно.
В результате получился небольшой компьютер с камерой, смотрящей на экран другого компьютера. Было реализовано распознавание целей с помощью OpenCV. Сам "клик" реализовывался с помошью "ардуинки" (то, что было на тот момент), которая "притворялась" мышью. Управление оной осуществлялась через UART. Естественно, добавлялись разные случайные задержки и случайно "сбивались" координаты клика. Само графическое приложение, естественно, ничего подозрительного не заметило.
Теперь захотелось что-то подобное сделать на андроиде, только без камеры...
Записан

qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #14 : Март 12, 2020, 08:59 »

почему запрет установить стороннею быструю программу скриншотера (или написать свою) так принципиален ?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.075 секунд. Запросов: 23.