Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-07-2005
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 20
zugazua2001 Va por buen camino
Problema con pasaje de .AVI a .BMP

Problema con pasaje de .AVI a .BMP

Hola a todos, yo copie un codigo de ejemplo de como capturar imagenes en formato .bmp de un archivo .AVI, bien dicho codigo lo corri sobre windows 98 y corria perfectamente
Formatie la maquina y me encontre que ahora lo ejecuto y me graba siempre la misma imagen, corro el archivo .AVI en el multimedia y corre perfectamente.
Que pudo haber pasado el codigo es el siguiente:
Código Delphi [-]
 function GrabAVIFrame(avifn: string; iFrameNumber: Integer; ToFileName: TFileName): Boolean;
 var
 Error: Integer;
 pFile: PAVIFile;
 AVIStream: PAVIStream;
 gapgf: PGETFRAME;
 lpbi: PBITMAPINFOHEADER;
 bits: PChar;
 hBmp: HBITMAP;
 AviInfo: TAVIFILEINFOW;
 sError: string;
 TmpBmp: TBitmap;
 DC_Handle: HDC;
 begin
 Result := False;
 // Initialize the AVIFile library.
 AVIFileInit;
 // The AVIFileOpen function opens an AVI file
 Error := AVIFileOpen(pFile, PChar(avifn), 0, nil);
 if Error <> 0 then
 begin
 AVIFileExit;
 case Error of
 AVIERR_BADFORMAT: sError := 'The file couldn''t be read';
 AVIERR_MEMORY: sError := 'The file could not be opened because of insufficient memory.';
 AVIERR_FILEREAD: sError := 'A disk error occurred while reading the file.';
 AVIERR_FILEOPEN: sError := 'A disk error occurred while opening the file.';
 end;
 ShowMessage(sError);
 Exit;
 end;
 // AVIFileInfo obtains information about an AVI file
 if AVIFileInfo(pFile, @AVIINFO, SizeOf(AVIINFO)) <> AVIERR_OK then
 begin
 // Clean up and exit
 AVIFileRelease(pFile);
 AVIFileExit;
 Exit;
 end;
 // Show some information about the AVI
 FichaCamara.Memo1.Lines.Add('AVI Width : ' + IntToStr(AVIINFO.dwWidth));
 FichaCamara.Memo1.Lines.Add('AVI Height : ' + IntToStr(AVIINFO.dwHeight));
 FichaCamara.Memo1.Lines.Add('AVI Length : ' + IntToStr(AVIINFO.dwLength));
 // Open a Stream from the file
 Error := AVIFileGetStream(pFile, AVIStream, streamtypeVIDEO, 0);
 if Error <> AVIERR_OK then
 begin
 // Clean up and exit
 AVIFileRelease(pFile);
 AVIFileExit;
 Exit;
 end;
 // Prepares to decompress video frames
 gapgf := AVIStreamGetFrameOpen(AVIStream, nil);
 if gapgf = nil then
 begin
 AVIStreamRelease(AVIStream);
 AVIFileRelease(pFile);
 AVIFileExit;
 Exit;
 end;
 // Read current Frame
 // AVIStreamGetFrame Returns the address of a decompressed video frame
 lpbi := AVIStreamGetFrame(gapgf, iFrameNumber);
 if lpbi = nil then
 begin
 AVIStreamGetFrameClose(gapgf);
 AVIStreamRelease(AVIStream);
 AVIFileRelease(pFile);
 AVIFileExit;
 Exit;
 end;
 // Show number of frames:
 FichaCamara.Memo1.Lines.Add(Format('Framstart: %d FrameEnd: %d',
 [AVIStreamStart(AVIStream), AVIStreamEnd(AVIStream)]));
 TmpBmp := TBitmap.Create;
 try
 TmpBmp.Height := lpbi.biHeight;
 TmpBmp.Width := lpbi.biWidth;
 bits := Pointer(Integer(lpbi) + SizeOf(TBITMAPINFOHEADER));
 DC_Handle := CreateDC('Display', nil, nil, nil);
 try
 hBmp := CreateDIBitmap(DC_Handle, // handle of device context
 lpbi^, // address of bitmap size and format data
 CBM_INIT, // initialization flag
 bits, // address of initialization data
 PBITMAPINFO(lpbi)^, // address of bitmap color-format data
 DIB_RGB_COLORS); // color-data usage
 finally
 DeleteDC(DC_Handle);
 end;
 TmpBmp.Handle := hBmp;
 AVIStreamGetFrameClose(gapgf);
 AVIStreamRelease(AVIStream);
 AVIFileRelease(pfile);
 AVIFileExit;
 try
 TmpBmp.SaveToFile(ToFileName);
 Result := True;
 except
 end;
 finally
 TmpBmp.Free;
 end;
 end;
 
 procedure TFichaCamara.BitBtn1Click(Sender: TObject);
 var
 Origen, DestBmp: String;
 begin
 Origen:='C:/Capture.Avi';
 DestBmp:='C:/Rob.BMP';
 if GrabAVIFrame(Origen,5,DestBmp)then
 begin
 Foto.Picture.LoadFromFile(DestBmp);
 Foto.Stretch:= True;
 end;
 end;


Desde ya gracias por la molestia, si saben de donde puedo sacar codigo para pasar de .AVI a .JPG que sea mas legible se los agradeceria.
Saludos a todos.

Última edición por marcoszorrilla fecha: 08-07-2005 a las 07:12:17. Razón: Añadir etiquetas delphi
Responder Con Cita
  #2  
Antiguo 08-07-2005
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 20
zugazua2001 Va por buen camino
ejecuto la funcion me devuelve true

Hola al ejecutar la funcion me devuelve true, pero siempre la misma imagen.
Sigo la traza paso a paso, y todo anda bien, me fije que el número de frame variara y todo bien.
Puede ser algo relacionado con windows Xp, yo antes tenia instalado windows 98 y todo andaba perfecto.
Me ocurre también algo particular cuando corro la aplicación para capturar video con la web cam, corro la aplicación y me aparece un recuadro con valores de registros, en assembler sigo corriendo con F9 se pasa a otra linea de dicho recuadro y continuo hasta que aparece la pantalla principal de la aplicacion.
¿Esto también puede que sea por la versión de Windows, porque esta misma aplicación sobre windows 98 corría perfectamente?.
Bueno si alguien me responde esto se lo agradeceria muchisimo, porque sin esto no puedo seguir avanzando.
Gracias por todo nuevamente.
Responder Con Cita
  #3  
Antiguo 09-07-2005
zugazua2001 zugazua2001 is offline
Miembro
 
Registrado: oct 2004
Ubicación: Necochea
Posts: 237
Poder: 20
zugazua2001 Va por buen camino
Problemas con pasaje de Avi a Bmp

Gracias, necesito solucionar esto porque sino no puedo avanzar.
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 21:41:51.


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