Estou capturando uma seqüencia de imagens, utilizando o comando abaixo: Robot.createScreenCapture(new Rectangle( Toolkit.getDefaultToolkit ().getScreenSize()));
O problema é que ele é muito lentooooo, varia de CPU para CPU, quando inicio a Thread de captura o CPU fica a 100% isso é desagradavel para mim, preciso de uma coisa rápida, que não dependa muito do CPU como isso depente.
Baixe a quantidade de cores e a resolução da tela, capturar a imagem da tela é realmente lento.
luistiagos
para usar isto como keylogger fica foda… se o programa usar 100% do processador do usuario…
thiagofesta
thiagol, como que eu poderia fazer isto sem eu alterar no meu sistema operacional?
Por exemplo no WTS, tem a opção de mudar para quantos bits, e quantidade de cores, existe modo de fazer isto no java?
T
thingol
Acho que é melhor você não fazer isso pelo Java. Por que é que você tem de fazer essa tal captura? Use um programa como o Camtasia, que gera arquivos bem menores.
thiagofesta
Desenvolvi um sistema de controle remoto, o único problema que tenho com ele atualmente é essa lentidão na captura das imagens, devido ao alto consumo do CPU.
Vocês imaginam alguma solução?
T
thingol
É um VNC?
saoj
Diminui o frame rate. É o jeito pois isso é uma operaçao custosa mesmo…
KWill
thiagofesta:
Desenvolvi um sistema de controle remoto, o único problema que tenho com ele atualmente é essa lentidão na captura das imagens, devido ao alto consumo do CPU.
Vocês imaginam alguma solução?
Eu também estou desenvolvendo um sistema de controle remoto. O único meio que encontrei de frear o consumo de CPU na captura de tela é botar um Thread.sleep() descarado aguardando alguns milissegundos, tempo que ajusto de acordo com o número de CPUs disponíveis.
Inté.
thiagofesta
thiagol:
É um controle remoto, parecido com vnc.
Kwill, e saoj:
Eu diminui o framerate já, ta 20 frame por segundo, porém varia de CPU para CPU, deixei um sleep de 50mls na thread.
Mesmo assim consome os 100% de cpu.
Valeu pela força
KWill
thiagofesta:
thiagol:
É um controle remoto, parecido com vnc.
Kwill, e saoj:
Eu diminui o framerate já, ta 20 frame por segundo, porém varia de CPU para CPU, deixei um sleep de 50mls na thread.
Mesmo assim consome os 100% de cpu.
Valeu pela força
Acho que ainda tá com uma taxa de atualização bem alta. O meu está funcionando a mais ou menos 1.5 fps, e gastando 20-35% de CPU num P4 HT 2.8 Ghz. Como eu falei, eu faço checagem de quantas CPU’s eu tenho disponível para determinar o tempo de espera. Deixei como o tempo em milissegundos como 400 / número de CPU’s. Sei que a taxa de atualização está por volta de 1.5 fps por que a captura de tela que faço demora mais ou menos 400 ms por si, mais os 200 ms de espera com sleep, pois o P4 HT parece ter dois núcleos para o Sistema Operacional.
Inté.
KWill
Lembrei de outro recurso que melhora a captura de tela, tentar usar a JVM do tipo “server”, que normalmente só é distribuída com o JDK.
Inté.
thiagofesta
KWill:
Obrigado pelas dicas, gostaria de saber como você faz esse cálculo de 400/nr CPUs?
Como vou saber de o CPU do cara tem dois núcleos, ou 3… pois está aplicação não será usada em um local só, será usada em várias, e cada um pode ter um CPU de um jeito.