Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2008
DarkDudae DarkDudae is offline
Miembro
 
Registrado: Apr 2006
Posts: 92
Poder: 13
DarkDudae Va por buen camino
Capturar Pantalla = Pantalla negra

Hola a todos, tengo una aplicación en la que en un cuadro del formulario, se reproduce un video usando los componentes DSPack.

Cuando intento hacer una captura de pantalla de esta aplicación mediante código, obtengo una imagen perfecta, salvo el recuadro donde se reproduce el vídeo, que aparece en negro debido al overlay del mismo (DirectX).

Tengo componentes del propio DSPack para capturar imagenes de un vídeo, pero claro, en ese caso sólo me captura la imagen del vídeo en sí, no del formulario completo.

A ver si alguno conoce un método para hacer una captura completa de la pantalla que funcione con vídeos.

Muchas gracias
Responder Con Cita
  #2  
Antiguo 27-03-2008
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: May 2005
Posts: 1.358
Poder: 15
MAXIUM Va por buen camino
Imagino que con video no te refieres a video juego.

Abrelo con VirtualDub y presiona la tecla print o impr pant. Luego vas a tu editor de imagenes favorito (mspaint por ejemplo) y pegas.

Tambien puedes usar HyperSnap-DX

Última edición por MAXIUM fecha: 27-03-2008 a las 15:49:31.
Responder Con Cita
  #3  
Antiguo 27-03-2008
DarkDudae DarkDudae is offline
Miembro
 
Registrado: Apr 2006
Posts: 92
Poder: 13
DarkDudae Va por buen camino
Gracias por responder, aunque si relees mi post, te darás cuenta, de que lo que me interesa, no es capturar un frame del vídeo (sí, no se trata de videojuegos), sino el formulario completo en el que se reproduce el vídeo. Por lo tanto, la opción del virtualdub no me vale.

La solución de utilizar programas externos tampoco me es útil, ya que la idea es poder capturar desde el propio programa.

Saludos
Responder Con Cita
  #4  
Antiguo 27-03-2008
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: Feb 2006
Posts: 449
Poder: 13
xEsk Va por buen camino
Hola, por mi experiencia en casos así (que no son muchos xD) capturar frames de vídeos usando el método "Impr Pant" u otros es prácticamente imposible...

Pero la solución que se me ocurre de forma rápida (y porqué no decirlo, chapucera), es capturar la pantalla de la misma forma que lo haces ahora y por separado capturar el frame del video con lo qué el componente te ofrece. Luego lo ajuntas tú (de forma programada, no manual xD) antes de mostrar la imagen final.

Problemas que se pueden presentar:
- Que si la ventana no esta al frente de todo, pues salga un churro enorme si "pegas" el frame en la posición que teóricamente debería estar... xD

Se que la solución es una enoooorme chapuza, pero es lo primero que se me ha ocurrido xD

Saludos.
Responder Con Cita
  #5  
Antiguo 27-03-2008
Mick Mick is offline
Miembro
 
Registrado: May 2003
Posts: 405
Poder: 16
Mick Va por buen camino
Hombre capturar las imagenes por separado no es tanta chapuza, porque en realidad las dos imagenes no estan juntas en ningun lado salvo en el monitor, de eso se trata el overlay, es decir la tarjeta de video en el ultimo momento antes de enviar la imagen al monitor superpone las dos cosas el video y la imagen del escritorio.

Saludos
Responder Con Cita
  #6  
Antiguo 27-03-2008
DarkDudae DarkDudae is offline
Miembro
 
Registrado: Apr 2006
Posts: 92
Poder: 13
DarkDudae Va por buen camino
Es una opción, aunque me ha sorprendido muchísimo no encontrar una solución más simple al problema. Nunca me ha gustado usar el componente de captura del DSPack (llamado DSGrabber), ya que el consumo de CPU a la hora de la reproducción se dispara en el momento en el que lo conectas al stream de video, pero puede ser la única opción.

Gracias a todos por las ideas.
Responder Con Cita
  #7  
Antiguo 25-04-2008
Lois Lois is offline
Registrado
 
Registrado: Feb 2008
Posts: 3
Poder: 0
Lois Va por buen camino
Hola DarkDudae!Estoy más o menos como tú. Estoy intentando hacer una aplicación que 'clone' mi escritorio y lo mande a pantalla completa a otro ordenador en red, para poder hacer demostraciones y demás, y el último problema que me he encontrado es precisamente ese, el video...consigo ver videos de youtube, veoh, webcam...pero cuando abro un video de mi ordenador con cualquier reproductor me encuentro la pantalla en negro.

Habia pensado que quizás era problema de la frecuencia de refresco al mandar la imagen, pero nada. He leído algo de DSPack y he tratado de instalarlo, pero uso delphi 5 y por lo visto es para delphi7...alguna idea o solucion alternativa?

Gracias
Responder Con Cita
  #8  
Antiguo 25-04-2008
DarkDudae DarkDudae is offline
Miembro
 
Registrado: Apr 2006
Posts: 92
Poder: 13
DarkDudae Va por buen camino
Hola Lois.

Antes de nada, comentarte que el DSpack, sí que puede instalarse en D5 sin ningún problema. De todas formas, y por lo que me comentas, no te serviría para nada, ya que una cosa es capturar un frame usando un control dentro de tus propios formularios y otra muy distinta hacerlo a nivel de escritorio.

El mayor problema es el overlay del vídeo, que utiliza la aceleración de la gráfica. El vídeo no se renderiza en la misma capa que el resto de la pantalla, de ahí que aparezca en negro.

Cuando buscaba solución a este problema, encontré un par de opcioneos que tal vez te sirvan:

1ª) Usar un programa específico de captura(ahora mismo no recuerdo el nombre, aunque si lo necesitas, el lunes cuando vuelva al trabajo te lo puedo mirar). Este programa, lo que hacía, era instalarte un filtro DirectShow, que desactivaba la aceleración del vídeo interponiéndose antes del Renderer final. No obstante, en mi caso, esta opción no era viable por la perdida de rendimiento que suponía, y porque, además, requería de instalación de este programa de terceros que además, no era gratuito.

2ª) Desactivar tu mismo directamente la aceleración de la gráfica, con la cosiguiente pérdida de rendimiento. Supongo que esta desactivación puede efectuarse mediante código. Tal vez esta sea la mejor solución para el caso que planteas.

Saludos
Responder Con Cita
  #9  
Antiguo 27-10-2008
dpg_2006 dpg_2006 is offline
Miembro
 
Registrado: Jul 2007
Posts: 13
Poder: 0
dpg_2006 Va por buen camino
Captura de Video

Mira DSPack es basado en Directshow por eso no lo puedes capturar, sencillamente usa un reproductor que sea basado en VFW y verás que todo te funcionará, Virtual DUB permite la captura con PrintScreen o con GetWindowDC porque es basado en VFW(Video for windows).....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Capturar la pantalla con lazarus jorge1987 Varios 1 13-09-2006 18:23:09
capturar parte de la pantalla gabriel3 Varios 1 21-01-2006 19:09:08
Capturar sección de la pantalla.. n3mohack API de Windows 1 22-09-2005 20:25:24
Error al capturar la pantalla!! DarkByte Gráficos 7 28-07-2005 04:16:33
Capturar pantalla pablo Varios 1 07-09-2004 21:15:10


La franja horaria es GMT +2. Ahora son las 06:15:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi