Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como grabar ilimitadamente (https://www.clubdelphi.com/foros/showthread.php?t=54587)

carmelina 24-03-2008 19:06:29

Como grabar ilimitadamente
 
Hola a todos!!!

Estoy haciendo un programa que grabe con mi webcam, y con vuestra ayuda conseguí un código que lo hace pero sólo me graba durante 4 minutos y 9 segundos, y no se qué tengo que modificar para que grabe más o un tiempo determinado por mi.
Si pudieseis ayudarme os estaría muy agradecida.

Saludos:-)

dec 24-03-2008 19:12:54

Hola,

Es extraño. ¿Se puede saber el código fuente que estás empleando?

eduarcol 24-03-2008 19:13:18

seria bueno si colocas el codigo con el que grabas y el componente que utilizas.

carmelina 24-03-2008 19:23:07

El codigo es:

Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    SaveDialog1: TSaveDialog;

    procedure FormCreate(Sender: TObject);
    procedure OpenVideoClick(Sender: TObject);
    procedure CloseVideoClick(Sender: TObject);
    procedure GrabFrameClick(Sender: TObject);
    procedure SaveBMPClick(Sender: TObject);
    procedure StartAVIClick(Sender: TObject);
    procedure StopAVIClick(Sender: TObject);
  private
    { Private declarations }
    hWndC : THandle;
    CapturingAVI : bool;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.DFM}
const WM_CAP_START = WM_USER;
const WM_CAP_STOP = WM_CAP_START + 68;
const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
const WM_CAP_SAVEDIB = WM_CAP_START + 25;
const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
const WM_CAP_SEQUENCE = WM_CAP_START + 62;
const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 CapturingAVI := false;
  hWndC := 0;
  SaveDialog1.Options :=[ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
end;

function capCreateCaptureWindowA(lpszWindowName : PCHAR;
  dwStyle : longint;
  x : integer;
  y : integer;
  nWidth : integer;
  nHeight : integer;
  ParentWin : HWND;
  nId : integer): HWND;
  STDCALL EXTERNAL 'AVICAP32.DLL';

procedure TForm1.OpenVideoClick(Sender: TObject);
begin
  hWndC := capCreateCaptureWindowA('My Own Capture Window',
  WS_CHILD or WS_VISIBLE ,
  Panel1.Left,
  Panel1.Top,
  Panel1.Width,
  Panel1.Height,
  Form1.Handle,
  0);
  if hWndC <> 0 then
  SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
end;

procedure TForm1.CloseVideoClick(Sender: TObject);
begin
  if hWndC <> 0 then begin
  SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
  hWndC := 0;
  end;
end;
procedure TForm1.GrabFrameClick(Sender: TObject);
begin
  if hWndC <> 0 then
  SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
end;
procedure TForm1.SaveBMPClick(Sender: TObject);
begin
  if hWndC <> 0 then begin
  SaveDialog1.DefaultExt := 'bmp';
  SaveDialog1.Filter := 'Bitmap files (*.bmp)|*.bmp';
  if SaveDialog1.Execute then
  SendMessage(hWndC,
  WM_CAP_SAVEDIB,
  0,
  longint(pchar(SaveDialog1.FileName)));
  end;
end;
procedure TForm1.StartAVIClick(Sender: TObject);
begin
  if hWndC <> 0 then begin
  SaveDialog1.DefaultExt := 'avi';
  SaveDialog1.Filter := 'AVI files (*.avi)|*.avi';
  if SaveDialog1.Execute then begin
  CapturingAVI := true;
  SendMessage(hWndC,
  WM_CAP_FILE_SET_CAPTURE_FILEA,
  0,
  Longint(pchar(SaveDialog1.FileName)));
  SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
  end;
end;
end;
procedure TForm1.StopAVIClick(Sender: TObject);
begin
  if hWndC <> 0 then begin
  SendMessage(hWndC, WM_CAP_STOP, 0, 0);
  CapturingAVI := false;
  end;
end;
 
end.

seoane 24-03-2008 22:32:43

¿Cual es el tamaño del fichero generado? ¿que sistema de archivos tienes? ¿Fat32? :confused:

carmelina 25-03-2008 15:55:20

Hola seoane!!
Mi sistema de archivos es NTFS.
No se si te servirá y si puedes ayudarme te lo agradecería mucho porque estoy un poco perdida. Igualmente si no pudieses gracias por interesarte:-)
Un saludo.

Casimiro Notevi 25-03-2008 19:13:13

Creo que seoane tiene el mismo problema que yo en este hilo.

mamcx 25-03-2008 21:37:16

Una recomendacion (aparte de la informacion adicional, como que error te sale)...

Si estas haciendo esto por aprender, ok. Pero no le veo el sentido a que le des vueltas al manejo de los mensajes & api de windows , que es un tema medio avanzado, y busques un control que ya haga eso. Seguro en torry.net encontraras varios.

Y de todos, estos son los mejores:

http://www.mitov.com/html/videolab.html

Se pueden usar gratis para programas no comerciales.

Me consta que en menos de 2 minutos (luego de ver el tutorial ;)) tienes una aplicacion full de captura de video.

carmelina 27-03-2008 19:18:01

Hola mamcx!!!
Muchas gracias por el enlace. Lo he probado pero no me hace nada y yo creo que es por la camara web. Cómo puedo indicarle mi camara si cuando pincho en las opciones de camara la mia no aparece, solo me aparece:none, default y camara usb.
Siento no explicarme muy bien pero estoy tan perdida que no se hacerlo mejor.
Es que necesito poder hacer esto para mi proyecto fin de carrera y mi problema es que no se nada de Delphi, así que quiero conseguir hacer esto y de camino ir aprendiendo Delphi.
Muchas gracias por tu ayuda.
Saludos.

mamcx 27-03-2008 22:10:27

No sera la camara USB? Me imagino que por ahi se conecta, no?

Tambien mira primero los ejemplos, seguro hasta ya esta hecho lo que buscas ;)

Luego los estudias y miras la documentacion por encima para que te hagas una idea. Es la forma de entender controles ya armados.

carmelina 28-03-2008 13:00:14

Hola mamcx!!
Ya me funciona, era una tontería y al final lo solucioné:-)De verdad muchísimas gracias porque con esto puedo trabajar mucho mejor. Muchas graciaS!!!!!
Saludos.


La franja horaria es GMT +2. Ahora son las 10:23:54.

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