PDA

Ver la Versión Completa : Capturar pantallas como video


jars
17-11-2010, 13:57:09
Hola amigos. Lo que me estan pidiendo es hacer un programa cliente y otro servidor que administre las capturas de pantallas (videos) de cada uno de las pc's de un call-center durante una conversacion telefonica. Esto es: el agente recibe una llamada y comienza a capturarse la pantalla para que al finalizar la conversacion el archivo con todas las capturas se envie por FTP o MessageQueing al servidor donde la enviara al repositorio definido. Lo que quieren es solamente capturar el video ya que el audio se graba por otro lado. Las pantallas se capturan a intervalos regulares segun tengan o no actividad y al momento de grabarse se le antepone la duracion y el offset de la captura, con esto el reproductor de las mismas va leyendo el archivo y sabe durante cuanto tiempo se muestra esa captura y luego continua con la siguiente. Esto esta en funcionamiento pero el cliente y servidor fueron desarrollados externamente y ahora no contamos con los fuentes para agregar y arreglar otras caracteristicas. Principalmente quisiera que me digan como hacer un snapshot de cada pantalla tanto en png como en otro formato mas liviano porque no podemos abusar del tamaño final porque son muchas llamadas por dia. Espero que me hallan entendido. Gracias.

Ñuño Martínez
17-11-2010, 14:27:01
Pues hombre, cierto es que alguna vez lo he perdido, pero afortunadamente suelo tener el entendimiento a buen recuaudo así que no he tenido que buscarlo para hallarlo. Aun así, gracias por el interés.

En cuanto a tu consulta, lo que tú buscas es un escritorio remoto (si no he entendido mal). Hay muchos ya disponibles que ya permiten generar un vídeo, por lo que te recomiendo que busques uno. Es mucho más fácil.

jars
17-11-2010, 14:59:45
Hola Ñuño, gracias por responder pero la opcion de escritorio remoto no me sirve. Basicamente necesito ir grabando pantallas en PNG u otro formato, el resto ya veré pero esta es mi necesidad.
Gracias

nemesio
17-11-2010, 16:16:59
Si quieres grabar pantallas tipo fotografía, lo puedes hacer de la siguiente manera:


procedure Capturar_Pantalla;
var
c: TCanvas;
r: TRect;
Foto: TBitmap;
FotoJPEG : TJPEGImage;
x,y,Letra,Numero:integer;
Ruta:String;
begin
c := TCanvas.Create;
c.Handle := GetWindowDC(GetDesktopWindow);
try
Ruta:=ExtractFileDir(Application.ExeName)+'\images\';
r := Rect(0, 0, Screen.Width, Screen.Height);
Foto := TBitmap.Create;
Foto.Width := Screen.Width;
Foto.Height :=Screen.Height;
Foto.Canvas.CopyRect(r, c, r);
// Convertir la captura de pantalla a jpg
FotoJPEG := TJPEGImage.Create;
FotoJPEG.Assign(Foto);
randomize;
Letra:=random(27);
numero:=random(2000);
FotoJPEG.SaveToFile(Ruta+IntTostr(numero)+'.jpg');
finally
ReleaseDC(0, c.Handle);
Foto.Free;
FotoJPEG.Free;
c.Free;
end;
end;




Solo tienes que activar un Timer y cada cierto tiempo le tomas "Fotografías" a la pantalla.

Saludos

jars
17-11-2010, 17:11:40
Gracias nemesio, ahora dime, hay alguna manera de setear la resolucion de pantalla? Como podría grabar en otros formatos como PNG o GIF o algun otro, es para darle al usuario la posibilidad de mejorar la calidad a costa de ocupar mas espacio o bajar calidad para no ocupar tanto. Gracias

nemesio
17-11-2010, 17:47:10
Si, en los foros vas a encontrar bastantes ejemplos de como cambiar la resolución de la pantalla desde tu aplicación, tambien como grabar en otros formatos de imagenes. En el ejemplo que te di, sale como hacerlo a Jpeg solamente, pero solo es cuestión de adaptar los otros formatos. No olvides incluir en el uses la unidad JPEGS.

jars
17-11-2010, 19:22:04
si, gracias ya lo probe y funciona correctamente, me falta podr setear resolucion y otros formatos.