Delphi FAQ

Jak zapisać pojedyńczą klatkę z pliku odtwarzanego przez TMediaPlayer

Johnny_Bit
Procedure SaveFrame(FrameNumberToCapture: Integer; Filename: String);
var
 BMP : TBitmap;
 ADC : HDC;
 GetPoint : TPoint;
 MyJpeg: TJpegImage;
begin
 BMP := TBitmap.Create;
 BMP.Height := 240; // tu nalezy ustawić wysokość
 BMP.Width := 320; // a tu szerokość klatki filmu
 MediaPlayer1.TimeFormat := tfFrames;
 MediaPlayer1.Display := Panel1;
 GetPoint := Panel1.ClientToScreen(Point(0,0));
 ADC := GetDC(0);
 MediaPlayer1.Position := FrameNumberToCapture;
 Application.ProcessMessages;
 Bitblt(BMP.Canvas.Handle, 0,0,
            BMP.Width,BMP.Height,
            ADC, GetPoint.X, GetPoint.Y, SRCCOPY);
 
 MyJpeg:= TJpegImage.Create;
 MyJpeg.Assign(BMP);
 MyJpeg.SaveToFile(Filename);
BMP.free; 
MyJpeg.free;
end;

pobrane z Experts-Exchange

FAQ

2 komentarzy

Niestety nie działa to na plikach .Mpg :-(

na końcu przydałoby się jeszcze
BMP.free; i MyJpeg.free;