
24-10-2003
|
|
Registrado
|
|
Registrado: oct 2003
Posts: 5
Poder: 0
|
|
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;
|
|