📄 framegrabber_.pas
字号:
{(((((((((((((((((((((((((((((((((((((((O))))))))))))))))))))))))))))))))))))))}
{ }
{ TActiveMovie frame grabber demo }
{ Copyright (c) 2003 Datastead }
{ All rights reserved. }
{ }
{ contact: support@Datastead.com }
{ support: http://www.Datastead.com }
{ }
{(((((((((((((((((((((((((((((((((((((((O))))))))))))))))))))))))))))))))))))))}
unit FrameGrabber_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, Menus, AMovie, Buttons;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
StatusBar1: TStatusBar;
ActiveMovie1: TActiveMovie;
OpenDialog1: TOpenDialog;
GroupBox1: TGroupBox;
Button6: TButton;
Button7: TButton;
GroupBox3: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
UpDown2: TUpDown;
UpDown1: TUpDown;
GroupBox4: TGroupBox;
SpeedButton1: TSpeedButton;
Button3: TButton;
Edit2: TEdit;
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
GroupBox5: TGroupBox;
Edit5: TEdit;
Button4: TButton;
Button5: TButton;
Button8: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure ActiveMovie1FGrabberCaptureCompleted(Sender: TObject;
Bitmap: TBitmap; DestType: TFrameCapture_Dest; FileName: String;
Success: WordBool);
procedure Edit5Change(Sender: TObject);
procedure ActiveMovie1OpenStateChange(Sender: TObject; OldState,
NewState: Integer);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
private
FFrameCount: integer;
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
//------------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
//------------------------------------------------------------------------------
begin
FFrameCount:= 0;
StatusBar1.Panels[0].Text:= ' storage path: ' + ActiveMovie1.StoragePath;
if not ActiveMovie1.IsDirectX8Installed then begin
ShowMessage ('DirectX8 is not installed on this platform. Please download it from www.microsoft.com');
end;
Edit5.Text := ActiveMovie1.StoragePath;
end;
//------------------------------------------------------------------------------
procedure TForm1.SpeedButton1Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
OpenDialog1.Filter := 'video clips';
OpenDialog1.FileName := '*.mpg;*.mpeg;*.avi;*.wav;*.mp3;*.asf;*.wmv';
if OpenDialog1.Execute then begin
Edit1.Text := OpenDialog1.FileName;
ActiveMovie1.FileName := Edit1.Text;
ActiveMovie1.Open;
end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button5Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.FileName := Edit1.Text;
ActiveMovie1.Open;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button8Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
Edit1.Text := 'http://www.Datastead.com/amovie/demo.mpeg';
ActiveMovie1.FileName := Edit1.Text;
ActiveMovie1.Open;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.FGrabber_BurstCount := 0;
ActiveMovie1.FGrabber_BurstMode := True;
ActiveMovie1.FGrabber_BurstInterval := StrToIntDef (Edit4.Text, 1);
ActiveMovie1.FGrabber_CaptureFrameTo (fcTBitmap);
// the captured frames are returned by the OnFGrabberFrameCaptureCompleted event.
end;
//------------------------------------------------------------------------------
procedure TForm1.ActiveMovie1FGrabberCaptureCompleted(Sender: TObject;
Bitmap: TBitmap; DestType: TFrameCapture_Dest; FileName: String;
Success: WordBool);
//------------------------------------------------------------------------------
begin
case DestType of
fcBmpFile, fcJPEGFile: begin
StatusBar1.Panels[1].Text := 'File ' + FileName + ' created';
end;
fcTBitmap: begin
Image1.Width := Bitmap.Width;
Image1.Height := Bitmap.Height;
Image1.Picture.Assign (Bitmap);
inc (FFrameCount);
Edit2.Text := ' ' + inttostr (FFrameCount);
end;
end;
end;
//------------------------------------------------------------------------------
procedure TForm1.ActiveMovie1OpenStateChange(Sender: TObject; OldState,
NewState: Integer);
//------------------------------------------------------------------------------
begin
if NewState = nsOpen then begin
Button1.Enabled := True;
Button2.Enabled := True;
Button3.Enabled := True;
Button4.Enabled := True;
Button6.Enabled := True;
Button7.Enabled := True;
end
else begin
Button1.Enabled := False;
Button2.Enabled := False;
Button3.Enabled := False;
Button4.Enabled := False;
Button6.Enabled := False;
Button7.Enabled := False;
end;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.FGrabber_BurstMode := False;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.Close;
end;
//------------------------------------------------------------------------------
procedure TForm1.Button4Click(Sender: TObject);
//------------------------------------------------------------------------------
// when FGrabber_Enabled is true, CaptureFrameToBitmap, CaptureFrameToImage,
// CaptureFrameToJPegFile and CaptureFrameToBmpFile uses the frame grabber
// synchronously (when the function returns, the capture is done, the
// OnFGrabberCaptureCompleted event is not used.
//------------------------------------------------------------------------------
begin
ActiveMovie1.CaptureFrameToImage (Image1);
end;
//------------------------------------------------------------------------------
procedure TForm1.Button6Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.FGrabber_BurstMode := True;
ActiveMovie1.FGrabber_BurstCount := StrToIntDef (Edit3.Text, 1);
ActiveMovie1.FGrabber_BurstInterval := StrToIntDef (Edit4.Text, 1);
ActiveMovie1.FGrabber_CaptureFrameTo (fcJpegFile);
// the captured file is returned by the OnFrameCaptureCompleted event.
end;
//------------------------------------------------------------------------------
procedure TForm1.Button7Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.FGrabber_BurstMode := True;
ActiveMovie1.FGrabber_BurstCount := StrToIntDef (Edit3.Text, 1);
ActiveMovie1.FGrabber_BurstInterval := StrToIntDef (Edit4.Text, 1);
ActiveMovie1.FGrabber_CaptureFrameTo (fcBmpFile);
// the captured file is returned by the OnFrameCaptureCompleted event.
end;
//------------------------------------------------------------------------------
procedure TForm1.Exit1Click(Sender: TObject);
//------------------------------------------------------------------------------
begin
Close;
end;
//------------------------------------------------------------------------------
procedure TForm1.Edit5Change(Sender: TObject);
//------------------------------------------------------------------------------
begin
ActiveMovie1.StoragePath := Edit5.Text;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -