|
|
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Необходимо быстро(25-30 к\c) получать скриншоты экрана с помощью java. Возможно ли это? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 06:47:59 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Что такое быстрое, по вашему, - Вы написали. А что такое "медленное" и каким макаром оно у вас работает и почему не устраивает - таки нет. Вообще-то, насчёт скриншотов я знаю только один способ - класс Robot. Хотя, возможно, мои знания устарели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:58:34 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
ShSergeЧто такое быстрое, по вашему, - Вы написали. А что такое "медленное" и каким макаром оно у вас работает и почему не устраивает - таки нет. Вообще-то, насчёт скриншотов я знаю только один способ - класс Robot. Хотя, возможно, мои знания устарели. Спасибо. Robot очень медленный, около 8-10 кадров в секунду. Мне нужно минимум 25-30. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:10:27 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelСпасибо. Robot очень медленный, около 8-10 кадров в секунду. Мне нужно минимум 25-30. Я подозреваю что дело не в Robot-е. А в остальных операциях тоже. Кадры же надо где-то хранить. Сжимать. И желательно эти всё отдельным потоком. Вот запустил пример отсюда http://www.dreamincode.net/forums/topic/234896-faster-screen-capture/ Результат Seconds it took for 32 screen captures: 1.22 Так что, полагаю, дело совсем не в роботе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:19:57 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGorloPavelСпасибо. Robot очень медленный, около 8-10 кадров в секунду. Мне нужно минимум 25-30. Я подозреваю что дело не в Robot-е. А в остальных операциях тоже. Кадры же надо где-то хранить. Сжимать. И желательно эти всё отдельным потоком. Вот запустил пример отсюда http://www.dreamincode.net/forums/topic/234896-faster-screen-capture/ Результат Seconds it took for 32 screen captures: 1.22 Так что, полагаю, дело совсем не в роботе. Странно, но у меня ссылка не открывается. Можете перезалить куда-нибудь? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:28:32 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavel, Ну, вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Запустите и сообщите результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:31:22 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGorloPavel, Ну, вот код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Запустите и сообщите результат. 1.877 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:43:36 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavel 1.877 Ну, дык это уже 17, а не 8-10, как было заявлено выше. А что видео интегрированное? У меня на двух мониторах 1.1 - 1.2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:47:51 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
А какая задача стоит? Может взять нативную либу и стримить её куда вам нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 11:48:21 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavel, 1.939 :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:18:01 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
А! Дык у меня два монитора! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:18:58 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
А ещё от разрешения тоже зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:20:33 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Пару раз запустил - стало 1.67. Короче, фиг его знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:22:29 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Вот ещё интересная тема. Автор расковырял и немного оптимизировал Robot-а. http://www.rune-server.org/programming/application-development/387765-directrobot-fast-java-robot-allows-screen-recording.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:23:55 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczА какая задача стоит? Может взять нативную либу и стримить её куда вам нужно? Нужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:43:41 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelBlazkowiczА какая задача стоит? Может взять нативную либу и стримить её куда вам нужно? Нужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.странное название темы. Из этих 4-х операций, самое медленное скриншот что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:46:55 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelНужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть. Зачем JNI? Там что-то сложное? У Java через VolatileImage+Graphics2D базовые операции достаточно быстрые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:49:58 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Petro123GorloPavelпропущено... Нужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.странное название темы. Из этих 4-х операций, самое медленное скриншот что-ли? Судя по всему - да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:54:24 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGorloPavelНужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть. Зачем JNI? Там что-то сложное? У Java через VolatileImage+Graphics2D базовые операции достаточно быстрые. Нужно выделять различающиеся части изображения в прямоугольные области и эти самые области отправлять по сети. В С++ я сравниваю построчно. Получается очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:56:52 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelСудя по всему - да. Снимайте изображения в одном потоке и складывайте в очередь. Через ExecutorService разгребайте очередь в нужное число потоков. Нужно только рост очереди предотвратить. ARGB битмапы дохрена занимают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:57:30 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelPetro123пропущено... странное название темы. Из этих 4-х операций, самое медленное скриншот что-ли? Судя по всему - да. -1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 12:59:12 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGorloPavelСудя по всему - да. Снимайте изображения в одном потоке и складывайте в очередь. Через ExecutorService разгребайте очередь в нужное число потоков. Нужно только рост очереди предотвратить. ARGB битмапы дохрена занимают. Не понял. Как мне это поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:04:16 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Petro123GorloPavelпропущено... Судя по всему - да. -1 На C# снятие одного скриншота, анализ с предыдущим и отправка разницы(включая шифрование в протоколе) уходит 25-40мс! Чуть меньше та же операция на Qt(C++). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:06:58 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelНе понял. Как мне это поможет? Мы выше выяснили что у вас реально робот делает 17 кадров в секунду. Причем после разогрева возможно будет больше. Вы заявляли про 8-10 кадров в секунду. Что позволяет предположить что 50% времени у вас занимает остальная обработка, которая стопорит захват экрана. Соответсвенно стоит распараллелить захват и обработку, чтобы эффективнее использовать ресурсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:07:25 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Petro123, А тут на снятие одного скриншота столько уходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:07:44 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavelНа C# снятие одного скриншота, анализ с предыдущим и отправка разницы(включая шифрование в протоколе) уходит 25-40мс! Чуть меньше та же операция на Qt(C++). На Linux и MacOS тоже работает? Если задача под винду, то и смысл заморачиваться с Java? Если есть куча аналогичных инструментов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:09:09 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGorloPavelНе понял. Как мне это поможет? Мы выше выяснили что у вас реально робот делает 17 кадров в секунду. Причем после разогрева возможно будет больше. Вы заявляли про 8-10 кадров в секунду. Что позволяет предположить что 50% времени у вас занимает остальная обработка, которая стопорит захват экрана. Соответсвенно стоит распараллелить захват и обработку, чтобы эффективнее использовать ресурсы. Нет, просто железо поменялось у меня с тех пор, когда я пробовал :) Сейчас это уже роли никакой не сыграет я думаю. Все равно медленно. Гораздо медленнее чем в C#. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:09:24 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGorloPavelНа C# снятие одного скриншота, анализ с предыдущим и отправка разницы(включая шифрование в протоколе) уходит 25-40мс! Чуть меньше та же операция на Qt(C++). На Linux и MacOS тоже работает? Если задача под винду, то и смысл заморачиваться с Java? Если есть куча аналогичных инструментов? В том то и дело, что я пишу теперь клиента под Mac и Linux. Под винду все работает давно. Сейчас выбираю инструмент. Есть уже наработка на Qt, но что-то я к java привык :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:11:39 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavel...Гораздо медленнее чем в C#. Напишите код, типа, как проверяли скорость, только на сишарпе. Щас сравним. :) А робот - не нативный-ли класс? И не пофиг-ли ему ява это или сишарп? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:17:29 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
ShSergeНапишите код, типа, как проверяли скорость, только на сишарпе. Щас сравним. :) А робот - не нативный-ли класс? И не пофиг-ли ему ява это или сишарп? Там много всяких нюансов. Например в реализации есть такой код. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Очевидный удар по производительности. Но как иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:21:46 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
ShSergeGorloPavel...Гораздо медленнее чем в C#. Напишите код, типа, как проверяли скорость, только на сишарпе. Щас сравним. :) А робот - не нативный-ли класс? И не пофиг-ли ему ява это или сишарп? Проверял на текущем(на тот момент) клиенте приложения. Север написанный на java+JNI работал очень медленно, именно больше всего времени занимало снятие скриншота. Потом я все бросил и решил забить на это дело(исходники утеряны). Теперь опять возникла эта необходимость. Я уже написал на Qt эту часть кода и она сравнима по скорости с C# версией ПО. Не вижу смысла спорить об этом когда 1.8 секунды уходит на снятие 32 кадров. И так понятно что скорость гораздо меньше. Да вы сами на C# попробуйте снять скриншот и замерить скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:23:30 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavel, обычно для таких скоростей идут ближе к железу - DirectX \ OpenGL ...память видюхи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:27:20 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
ShSergeGorloPavel...Гораздо медленнее чем в C#. Напишите код, типа, как проверяли скорость, только на сишарпе. Щас сравним. :) А робот - не нативный-ли класс? И не пофиг-ли ему ява это или сишарп? Каюсь... Замерил сейчас на C# отдельно снятие скриншота. Что-то не намного быстрее на C# :) Где-то видимо я затупил. Может можно как-то без JNI бытро сравнить два кадра и выделить регионы в отдельные битмапы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:39:05 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Petro123GorloPavel, обычно для таких скоростей идут ближе к железу - DirectX \ OpenGL ...память видюхи Первое и третье ни каким боком к яве (в правильном понимании технологии), а второе - к сабжу. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 13:40:44 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
ShSerge, тут заявлено 30 кадров в сек, а это близко к пределу не только Java, но и железа. (реальное видео). Так что технологии любые и FPS будет зависить даже от чихающей рядом уборщицы )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:02:36 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Petro123ShSerge, тут заявлено 30 кадров в сек, а это близко к пределу не только Java, но и железа. (реальное видео). Так что технологии любые и FPS будет зависить даже от чихающей рядом уборщицы )) 20-24 хватит для трансляции удаленного экрана. Но хотя бы этого достичь на java. Эхх.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:20:43 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
GorloPavel, по сети большой объем не прогнать. Или алгоритм дельты нетривиальный. Есть же готовые либы на линуксы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:26:50 |
|
||
|
Быстрое получение скриншота экрана
|
|||
|---|---|---|---|
|
#18+
Petro123GorloPavel, по сети большой объем не прогнать. Или алгоритм дельты нетривиальный. Есть же готовые либы на линуксы Что значит большой объем не прогнать? Работает же сейчас система. Но не на java :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 14:28:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2127693]: |
0ms |
get settings: |
15ms |
get forum list: |
27ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
89ms |
get topic data: |
20ms |
get forum data: |
6ms |
get page messages: |
97ms |
get tp. blocked users: |
2ms |
| others: | 339ms |
| total: | 607ms |

| 0 / 0 |
