Implementando um VNC

Queria fazer algo genérico que filmasse qualquer coisa na minha tela e transmitisse pela Internet, por isso que eu acho que esse esquemas de hook não me serve.

Pô, no final das contas eu quero passar um filme pela Internet, e isso é praticamente impossível devido as minhas limitações de banda, tanto no cliente, onde eu não exijo banda larga, tanto no servidor, onde tenho uma banda limitada.

Vou dar uma olhada no VNC de qualquer jeito, e tentar meter um MPEG em cima pra ver o que acontece. O ideal seria MPEG4, mas java ainda não suporta. Tem um tal de ffmpeg, mas está além das minhas forças entender aquilo.

Valeu pessoal pelas dicas!

Para ter uma ideia da qualidade que vai sair usando MPEG2/4, basta assistir matrix e tentar ler o shell quanto a Trinity executa um nmap na matrix http://www.insecure.org/nmap/nmap_inthenews.html.

:shock:
Eu héin?!

[quote=saoj]O programinha abaixo já te permite brincar de fazer um codec VNC.

Ele te fala quantos pixels estão mudando conforme vc brinca com a tela.

Se alguem fizer um codec de brincadeira, tipo um MPEG da vida e quiser me doar eu aceito. :stuck_out_tongue:

O objetivo e compremir esses bytes que estão mudando para eu poder jogar isso na rede.

>[/quote]

Eu fiz dois codecs de compressão de vídeo extremamente primitivos ao meu ver, mas que normalmente funcionam pelo que deu para mim testar.
A versão 1 e a versão 2 não são compatíveis entre si.
Ambos possuem suporte para frames codificados na forma de array de bytes, array de shorts e array de ints, só que usando-se arrays de shorts e arrays de ints, cada elemento do array precisa representar exatamente 1 pixel.
Para usar os codecs, basta chamar encodeFrame passando-se parâmetros e depois decodeFrame passando-se parâmetros.
O tamanho do vídeo e a paleta de cores deve se manter constante ou o codec pára de funcionar sem avisar.
Ambos os codecs também não suportam múltiplas threads.
Uma diferença entre os codecs é que a versão 2 usa compressão via análise de macroblocos 8x8, o que aumenta significativamente a compressão pelo que pude testar.
Ambos codecs não criam qualquer tipo de perda na qualidade da imagem (são “lossless”).
Ambos codecs são parte do código da minha solução de acesso remoto sob licença GPLv3 batizada como “Satan-AnyWhere” que devo lançar em algum momento.
Se der, gostaria de ser alertado caso os codecs apresentem algum erro.

Inté.

Parabéns!!!

Consegui, acho que praticamente implementei um quase-shell-remoto com um quase-VNC e outra coisas. Os meus amigos que testaram o Satan-AnyWhere afirmam que ele poderia se chamar JNetBus ou NetBus4J, devido a algumas funcionalidades remotas existentes nele. Aviso que o código do Satan-AnyWhere começou a ser desenvolvido a um bom tempo atrás, e pode muito bem ter diversas pérolas. Antes de sair usando ele, recomendo uma leitura ao arquivo “readme-pt-br.txt”, que é o único manual do Satan-AnyWhere que disponibilizo. A versão que estou disponibilizando no fórum não é uma versão definitiva de lançamento ainda. Para ligar o “modo VNC”, deve-se procurar no manual instruções sobre como inicializar o modo gráfico.

Por causa do limite de tamanho dos anexos, vou ter que disponibilizar o Satan-AnyWhere na forma de 5 volumes zip no fórum. Espero que esse aplicativo que desenvolvo sirva para alguma coisa.

Editado: Atualizei os anexos, pois haviam bugs em alguns módulos.

Inté.

Parte 2.

Inté.

Parte 3.

Inté.

Parte 4.

Inté.

Parte 5.

Inté.

KWill, q tal colocar num sourceforge ou java.net da vida?

Era uma das idéias, mas estou pensando em fazer isso depois de um completo refactoring pois pelo menos para mim o código tá uma grande bagunça.

Por ora eu deixo por aqui no fórum para o pessoal usar/opinar/etc.

Inté.