Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Visualizar video con el codigo en un thread (https://www.clubdelphi.com/foros/showthread.php?t=63350)

carmelina 10-02-2009 16:35:13

Visualizar video con el codigo en un thread
 
Hola a todos!
Tengo un problema con mi código y espero que alguien pueda ayudarme. La cosa es que intento visualizar un video con mi aplicacion y el código para ello lo tengo en un thread para poder hacer más cosas. La cosa es que si el código lo tengo en el Thread me dice que el fichero no exista aunque exista, mientras que si el mismo código lo tengo en el principal si puedo visualizar el video sin problemas.
El código de mi hilo es este. Si veis algo raro o que me falta algo que pudiese ayudarme os lo agradecería mucho.
Código:

unit HiloVisualizarvideo;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, FileCtrl;
type
  VisualizarVideo = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
   
  end;
implementation
uses Visualizacion, BusquedaBD;
{ Important: Methods and properties of objects in VCL can only be used in a
  method called using Synchronize, for example,
      Synchronize(UpdateCaption);
  and UpdateCaption could look like,
    procedure HiloVisualizarVideo.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }
{ HiloVisualizarVideo }

procedure VisualizarVideo.Execute;
var
 nom : String;
 IdUser : String;
 path : String;
begin
  { Place thread code here }
 
    MisvideosSeguridad.OpenDialog1.DefaultExt := 'avi';
    MisvideosSeguridad.OpenDialog1.Filter := 'AVI files (*.avi)|*.avi';
    nom:= SearchBD.Edit5.Text;
    MisvideosSeguridad.nombreborrar:=nom;
    SearchBD.Edit5.Clear;
    IdUser:=MisvideosSeguridad.Edit9.Text;
    MisvideosSeguridad.IdBorrar:=IdUser;
    MisvideosSeguridad.OpenDialog1.FileName:= 'C:\Videos\'+IdUser+'\'+nom+'.avi';
    path:='C:\Videos\'+IdUser+'\'+nom+'.avi';
  if DirectoryExists(path) then
    begin
      MisvideosSeguridad.VLAVIPlayer1.FileName:=MisvideosSeguridad.OpenDialog1.FileName; //Seleccionamos el nombre del fichero a visualizar
      MisvideosSeguridad.StatusBar1.SimpleText := 'Repoduciendo Archivo: ' + MisvideosSeguridad.OpenDialog1.FileName;
      MisvideosSeguridad.VLAVIPlayer1.Enabled:=true;
    end;
    if not DirectoryExists(path) then
    MisvideosSeguridad.Edit4.Text:=path;
 
end;
end.

Muchas gracias.
Un saludo.

cHackAll 11-02-2009 21:10:18

No entiendo por que usas un hilo! acaso un TMediaPlayer o cualquier otro componente basado en MCI no crea internamente los hilos necesarios? Si es por causa del VLAVIPlayer usa otro componente que el AVI no necesita nada en "especial".

Saludos

carmelina 17-02-2009 15:45:11

Hola!!
Pues tenías razón, el TVLAVIPlayer implementa ya un hilo para la visualización. Muchas gracias, porque es que no paro de darle vueltas a los threads y lo complico yo más:-)
De nuevo muchas gracias.
Por cierto a ver si alguien pudiese ayudarme con otro problemilla, la cosa es que tengo que grabar desde mi web cam, y entonces como cuando estaba grabando la aplicacion se quedaba solo grabando y no podía hacer nada más, he puesto el código de la grabación en un thread, pero se sigue quedando pillada y sólo graba, no me permite hacer nada mientras graba, cómo puedo solucionar esto? porque según yo entiendo la definición de thread, podría conseguir esto usando uno, pero no es así. Tal vez no estoy usando la llamada adecuada del thread, así que la adjunto por si alguien puede ayudarme.
Código:

procedure TMisvideosSeguridad.Grabar_captura();
var
  p : GrabarCaptura;
begin
  p:= GrabarCaptura.Create(True);
  p.FreeOnTerminate := False;
  p.Resume;
 
end;

GrabarCaptura es mi hilo, y en él, en el proceso execute tengo el código que hace que grabe la cámara.
Si alguien pudiese ayudarme o guiarme un poco sería genial.
Un saludo.


La franja horaria es GMT +2. Ahora son las 12:51:20.

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