Ver Mensaje Individual
  #4  
Antiguo 24-10-2003
etruel etruel is offline
Registrado
 
Registrado: oct 2003
Posts: 5
Reputación: 0
etruel Va por buen camino
pero como no!! aca esta el código
Use el Media Detector del Direct Show9. Que aunque creo que no permite acceder frame x frame, pude acceder a segundo x segundo que igual me sirve.


Cita:
var
Res: HRESULT;
bmih: tagBITMAPINFOHEADER;
hdcDest: HDC;
bmi: tagBITMAPINFO;
Bitmap: HBITMAP;
Size: Integer;
Buffer: array of PChar;
cantstream, actualstream: Integer;
Player: IMediaDet;

Begin
CoCreateInstance(CLSID_MediaDet,nil,CLSCTX_INPROC_SERVER,IID_IMediaDet,Player);
Player.put_Filename(Filename);
Player.get_OutputStreams(CantStream);
Res := Player.GetBitmapBits(ActualSeg, @Size, 0, MediaWidth, MediaHeight);
if Res = S_OK then
begin
SetLength(Buffer, Size);
hdcDest := GetDC(0);

Res := Player.GetBitmapBits(ActualSeg, 0, @Buffer[0], MediaWidth, MediaHeight);

ZeroMemory(@bmi, SizeOf(tagBITMAPINFO));

CopyMemory(@bmih, @Buffer[0], SizeOf(tagBITMAPINFOHEADER));

CopyMemory(@bmi.bmiHeader, @bmih, SizeOf(tagBITMAPINFOHEADER));

Bitmap := CreateDIBitmap(hdcDest, bmih, CBM_INIT, @Buffer[SizeOf(tagBITMAPINFOHEADER)], bmi, DIB_RGB_COLORS);

image1.Picture.Bitmap.Handle := Bitmap;

end;
end;
Responder Con Cita