Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-06-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Capturar frames del TMediaPlayer

Hola a todos.
Quiero capturar algunos frames de un fichero de video que esta ejecutando el TMEdiaPlayer.
¿Como lo hago?.
Habia pensado, una vez posicionado en el frame a grabar, en copiar el frame a un TImage y grabarlo como jpg.
Pero.....¿como accedo al "dibujo" del frame?.
Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 29-06-2003
madriles madriles is offline
Miembro
 
Registrado: may 2003
Ubicación: madrid
Posts: 93
Poder: 21
madriles Va por buen camino
bueno, creo que lo primero que tienes que hacer es que se ejecute el media player en un contenedor que puedas tratar, por ejemplo en un TPanel.
Pon en tu formulario un TPanel (Left y Top := 0 ) y un TImage, luego este codigo donde mas te guste ( OnCreate, OnShow, OnClick...)

with MediaPlayer1 do
begin
Display:=Panel1;
Panel1.Width:=DisplayRect.Right;
Panel1.Height:=DisplayRect.Bottom;
Image1.Height:=Panel1.Height;
Image1.Width:=Panel1.Width;
end;

luego te posicionas en la imagen que quieres grabar y pulsas en un TButton que tengas con este codigo

Image1.Canvas.CopyRect(Image1.ClientRect,Self.Canvas,Panel1.ClientRect);

luego, no te queda mas que salvar la imagen que me temo tendra que ser en bmp y luego tendras que convertirla a jpg
Responder Con Cita
  #3  
Antiguo 29-06-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Lo he probado, pero aparece todo en negro.
Es decir, lo que captura del tpanel y copio en el timage
es una imagen en negro.
¿donde estara el frame?
Responder Con Cita
  #4  
Antiguo 30-06-2003
madriles madriles is offline
Miembro
 
Registrado: may 2003
Ubicación: madrid
Posts: 93
Poder: 21
madriles Va por buen camino
he estado haciendo la prueba y funciona correctamente, pero tienes que tener en cuenta que lo que copias a TImage no es el contenido del TPanel sino del form, fijate que pone Self.Canvas, por tanto, aunque el clientrect sea el del panel realmente se refiere al formulario de hay que te indique que debe estar en left y top a 0 para evitar las distorsiones. en definitiva es copiar cualquier zona del formulario en la imagen.
de todas formas si sigue sin funcionarte y no sabes a que es debido dimelo y te envio por e-mail un ejemplo.
un saludo
Responder Con Cita
  #5  
Antiguo 30-06-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Vaya, es curioso. Haré mas pruebas esta noche. Ya te comentare algo. Gracias.
Responder Con Cita
  #6  
Antiguo 30-06-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Lo he probado ahora en un form nuevo y funciona.
Como lo puse en el programa completo tendria algo por ahi que falla.
Ahora en un programa limpio, funciona!!!.
Gracias.
Responder Con Cita
  #7  
Antiguo 01-07-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Bueno, eso creo.
Resulta que en casa, lo probe con el Delphi7 y no funciona.
El mismito programa con el Delphi5 si que funciona.
¿Por que sera?.
¿El mediaplayer del delphi7 no manda la imagen
al canvas del form?.
En fin. Tendre que hacerlo con el 5.
La verdad es que es curioso. Si alguien sabe porque, que hable ahora o calle para siempre. Jeje
Responder Con Cita
  #8  
Antiguo 01-07-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Bueno, parece ser que el delphi7 no es.
He probado con el Delphi7 y tambien funciona. Pero en el pc de mi casa no. Lo unico que se me ocurre es la version del directx y/o el windows medialplayer
Donde funciona tengo instalada las directx 8.1 y el mediaplayer 8.00.00.44.77. Esta noche mirare las versiones del ordenador donde no funciona. ¿que otra cosa podria ser?.
Responder Con Cita
  #9  
Antiguo 01-07-2003
madriles madriles is offline
Miembro
 
Registrado: may 2003
Ubicación: madrid
Posts: 93
Poder: 21
madriles Va por buen camino
me temo que en este tema estoy bastante "pez", pero por logica no debe ser el mediaplayer ni posiblemente el directX.
estamos tratando simplemente con el canvas, y por tanto lo que con el se relacione. si yo copio un trozo de la pantalla, me da lo mismo que venga de un mediaplayer un image o simplemente que tengas tbutton en la zona a copiar, simplemente copia lo que ve.
de todo esto deduzco que al pasar de un ordenador a otro las versiones de Graphics que aparecen en el uses, encuentran algun conflicto.
en teoria un ejecutable deberia funcionar sin mas. comprueba pues pasando solo el ejecutable a los ordenadores que tengas y mira a ver si funciona.
lo lamento pero no se me ocurre otra cosa, a ver si los compañeros pueden hecharte una mano
Responder Con Cita
  #10  
Antiguo 01-07-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
He ejecutado el programa ya compilado en mi casa y no funciona.
Asi, que el delphi no tiene nada que ver.
Supongo que sera la tarjeta, los drivers, vete tu a saber.
En casa, tengo las directx9 y el windows mediaplayer 9.
Bueno, si lo consigo ya te lo hare saber. Gracias...
Responder Con Cita
  #11  
Antiguo 02-07-2003
chrisredfield chrisredfield is offline
Registrado
 
Registrado: jun 2003
Posts: 8
Poder: 0
chrisredfield Va por buen camino
Al menos ya he encontrado la causa. ¡¡¡Los drivers de la tarjeta!!.
Iguale el directx y el mediaplayer y seguia fallando, luego solo quedaban los drivers. Arranque el xp con una vga normal, y voala!!!, funciona.
El problema es a ver como explicao todo esto a los de nvidia.
En fin, creo que tendre que arrancar en modo vga normal para generar los thumbnails.
El caso es que estoy haciendo un programa para ordenar y catalogar videos, generando una serie de thumbnails por clip.
El Acdsee solo genera el primer fotograma del video, que sirve de poco.
En mi programa, seleccionas un directorio, y te genera varios thumbnails (configurables) por cada uno de los videos.
Luego tengo pensado en hacer un browser de los directorios catalogados. Si la cosa queda bien, tengo pensado colgarlo todo en esta web para que entre todos lo mejoremos.
Pero eso si....no funciona con gforce ti 4200.
Bueno.....por ahora....
Responder Con Cita
  #12  
Antiguo 20-09-2011
ingel ingel is offline
Miembro
 
Registrado: jun 2003
Posts: 239
Poder: 21
ingel Va por buen camino
Hola.. no se si activar un hilo tan antiguo sera correcto , pero es justamente el problema que tengo .. puntualmente tengo un video reproduciendose en el tmediaplayer que esta contenido en un panel (mas pequeño que el form principal) y coloque un Timage DENTRO del panel( panel4 ) con el mismo tamaño y la propiedad Stretch en true y autosize en false..
La captura la realiza pero me toma la imagen desde la coord 0,0 del FORM1 y no del panel4 que es donde esta el video..
He aqui el codigo
Código:

IF Opendialog1.execute then begin
 Mediaplayer1.filename:= opendialog1.filename;
 Mediaplayer1.Open;
 Mediaplayer1.Display:= panel4;
 Image1.Height:=Panel4.Height;
 Image1.Width:=Panel4.Width;
 MediaPlayer1.DisplayRect := Rect(0, 0, panel4.Width, panel4.Height);
 Mediaplayer1.Play

 Image1.Canvas.CopyRect(Image1.ClientRect,Self.Canvas,Panel4.ClientRect);
 Image1.Picture.SaveToFile('d:\temp\foto.jpg');

end;
Gracias y sds
Responder Con Cita
  #13  
Antiguo 20-09-2011
beginner01 beginner01 is offline
Miembro
NULL
 
Registrado: mar 2011
Ubicación: República Dominicana
Posts: 181
Poder: 14
beginner01 Va por buen camino
Captura con TMediaPlayer

Saludos.

Prueba este código que encontré en la página de Experts Exchange, a ver si es lo que nesesitas


Código Delphi [-]
//uses Jpeg;
procedure TForm1.Capturar;
var
  BMP : TBitmap;
  ADC : HDC;
  GetPoint : TPoint;
  MyJpeg: TJpegImage;
begin
  BMP := TBitmap.Create;
  BMP.Height := Panel1.Height;
  BMP.Width := Panel1.Width; // it is also the size of Panel1
  MediaPlayer1.TimeFormat := tfFrames;
  //MediaPlayer1.Display := Panel1;
  GetPoint := Panel1.ClientToScreen(Point(0,0));
  ADC := GetDC(0);
  //MediaPlayer1.Position := FrameNumberToCapture;
  Application.ProcessMessages;
  Bitblt(BMP.Canvas.Handle, 0,0,
             BMP.Width,BMP.Height,
             ADC, GetPoint.X, GetPoint.Y, SRCCOPY);

  MyJpeg:= TJpegImage.Create;
  MyJpeg.Assign(BMP);
  MyJpeg.SaveToFile('D:\Temp\Captura.JPG');
end;

Cambia Panel1 por el que usas para visualizar el video.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 23:02:39.


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