powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрое получение скриншота экрана
25 сообщений из 39, страница 1 из 2
Быстрое получение скриншота экрана
    #38549615
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Необходимо быстро(25-30 к\c) получать скриншоты экрана с помощью java. Возможно ли это? Спасибо!
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549726
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое быстрое, по вашему, - Вы написали. А что такое "медленное" и каким макаром оно у вас работает и почему не устраивает - таки нет.
Вообще-то, насчёт скриншотов я знаю только один способ - класс Robot. Хотя, возможно, мои знания устарели.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549834
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeЧто такое быстрое, по вашему, - Вы написали. А что такое "медленное" и каким макаром оно у вас работает и почему не устраивает - таки нет.
Вообще-то, насчёт скриншотов я знаю только один способ - класс Robot. Хотя, возможно, мои знания устарели.
Спасибо. Robot очень медленный, около 8-10 кадров в секунду. Мне нужно минимум 25-30.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549861
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Так что, полагаю, дело совсем не в роботе.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549887
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Так что, полагаю, дело совсем не в роботе.
Странно, но у меня ссылка не открывается. Можете перезалить куда-нибудь? Спасибо.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549896
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,

Ну, вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
import java.awt.*;

public class Test{
public static void main (String [] args) throws Exception{

Rectangle rect = new Rectangle( Toolkit.getDefaultToolkit().getScreenSize() );
        Robot robot = new Robot();
        int count = 1;
        long beforeTime = System.currentTimeMillis();
        while ( count < 32 ) {
                robot.createScreenCapture( rect );
                count++;
        }
        double time = System.currentTimeMillis() - beforeTime;
        System.out.println( "Seconds it took for 32 screen captures: " + time / 1000 );

}
}


Запустите и сообщите результат.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549921
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGorloPavel,

Ну, вот код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
import java.awt.*;

public class Test{
public static void main (String [] args) throws Exception{

Rectangle rect = new Rectangle( Toolkit.getDefaultToolkit().getScreenSize() );
        Robot robot = new Robot();
        int count = 1;
        long beforeTime = System.currentTimeMillis();
        while ( count < 32 ) {
                robot.createScreenCapture( rect );
                count++;
        }
        double time = System.currentTimeMillis() - beforeTime;
        System.out.println( "Seconds it took for 32 screen captures: " + time / 1000 );

}
}


Запустите и сообщите результат.

1.877
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549927
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel 1.877
Ну, дык это уже 17, а не 8-10, как было заявлено выше. А что видео интегрированное? У меня на двух мониторах 1.1 - 1.2.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549929
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая задача стоит? Может взять нативную либу и стримить её куда вам нужно?
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549987
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavel,
1.939 :(
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549991
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А! Дык у меня два монитора!
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38549994
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ещё от разрешения тоже зависит.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550001
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пару раз запустил - стало 1.67.
Короче, фиг его знает.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550006
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ещё интересная тема. Автор расковырял и немного оптимизировал Robot-а.
http://www.rune-server.org/programming/application-development/387765-directrobot-fast-java-robot-allows-screen-recording.html
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550048
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА какая задача стоит? Может взять нативную либу и стримить её куда вам нужно?
Нужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550055
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelBlazkowiczА какая задача стоит? Может взять нативную либу и стримить её куда вам нужно?
Нужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.странное название темы.
Из этих 4-х операций, самое медленное скриншот что-ли?
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550062
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelНужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.
Зачем JNI? Там что-то сложное? У Java через VolatileImage+Graphics2D базовые операции достаточно быстрые.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550074
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123GorloPavelпропущено...

Нужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.странное название темы.
Из этих 4-х операций, самое медленное скриншот что-ли?
Судя по всему - да.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550079
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGorloPavelНужно получать скриншот, сравнивать его с пердыдущим(JNI конечно) и обратно в java передавать изменившиеся участки и отправлять их в сеть.
Зачем JNI? Там что-то сложное? У Java через VolatileImage+Graphics2D базовые операции достаточно быстрые.

Нужно выделять различающиеся части изображения в прямоугольные области и эти самые области отправлять по сети. В С++ я сравниваю построчно. Получается очень быстро.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550083
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelСудя по всему - да.
Снимайте изображения в одном потоке и складывайте в очередь.
Через ExecutorService разгребайте очередь в нужное число потоков. Нужно только рост очереди предотвратить. ARGB битмапы дохрена занимают.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550088
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelPetro123пропущено...
странное название темы.
Из этих 4-х операций, самое медленное скриншот что-ли?
Судя по всему - да.
-1
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550095
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczGorloPavelСудя по всему - да.
Снимайте изображения в одном потоке и складывайте в очередь.
Через ExecutorService разгребайте очередь в нужное число потоков. Нужно только рост очереди предотвратить. ARGB битмапы дохрена занимают.
Не понял. Как мне это поможет?
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550098
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123GorloPavelпропущено...

Судя по всему - да.
-1
На C# снятие одного скриншота, анализ с предыдущим и отправка разницы(включая шифрование в протоколе) уходит 25-40мс! Чуть меньше та же операция на Qt(C++).
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550100
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GorloPavelНе понял. Как мне это поможет?
Мы выше выяснили что у вас реально робот делает 17 кадров в секунду. Причем после разогрева возможно будет больше.
Вы заявляли про 8-10 кадров в секунду. Что позволяет предположить что 50% времени у вас занимает остальная обработка, которая стопорит захват экрана. Соответсвенно стоит распараллелить захват и обработку, чтобы эффективнее использовать ресурсы.
...
Рейтинг: 0 / 0
Быстрое получение скриншота экрана
    #38550101
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

А тут на снятие одного скриншота столько уходит.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрое получение скриншота экрана
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]