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

 
 
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
 



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 04:12:41.


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