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

start [/forum/topic.php?all=1&fid=59&tid=2127693]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 519ms |

| 0 / 0 |
