📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ExtCtrls, StdCtrls, ComCtrls, dspack, DSUtil, directshow, OleServer;
type
TForm1 = class(TForm)
VideoWindow: TDSVideoWindow;
Memo1: TMemo;
Splitter1: TSplitter;
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
OpenDialog: TOpenDialog;
Exit1: TMenuItem;
Control1: TMenuItem;
Play1: TMenuItem;
Pause1: TMenuItem;
Stop1: TMenuItem;
FilterGraph: TDSFilterGraph2;
DSTrackBar1: TDSTrackBar;
ListBox1: TListBox;
Splitter2: TSplitter;
procedure Open1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Play1Click(Sender: TObject);
procedure Pause1Click(Sender: TObject);
procedure Stop1Click(Sender: TObject);
procedure FilterGraphDSEvent(sender: TOleServer; Event, Param1,
Param2: Integer);
procedure FormShow(Sender: TObject);
procedure ListBox1DblClick(Sender: TObject);
private
{ D閏larations priv閑s }
public
{ D閏larations publiques }
procedure GetFilterList(graph: IFilterGraph; list: TStrings);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog.Execute then
begin
FilterGraph.ClearGraph;
memo1.Clear;
FilterGraph.FilterGraph2.RenderFile(StringToOleStr(OpenDialog.FileName),nil);
GetFilterList(FilterGraph.FilterGraph2,listbox1.Items);
FilterGraph.QueryInterfaces;
FilterGraph.MediaControl.Run;
end;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
FilterGraph.Disconnect;
Application.Terminate;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FilterGraph.Disconnect;
end;
procedure TForm1.Play1Click(Sender: TObject);
begin
if assigned(FilterGraph.MediaControl) then FilterGraph.MediaControl.Run;
end;
procedure TForm1.Pause1Click(Sender: TObject);
begin
if assigned(FilterGraph.MediaControl) then FilterGraph.MediaControl.Pause;
end;
procedure TForm1.Stop1Click(Sender: TObject);
begin
if assigned(FilterGraph.MediaControl) then FilterGraph.MediaControl.Stop;
end;
procedure TForm1.FilterGraphDSEvent(sender: TOleServer; Event, Param1,
Param2: Integer);
begin
memo1.Lines.Add(GetEventCodeDef(event));
end;
procedure TForm1.FormShow(Sender: TObject);
begin
FilterGraph.Connect;
end;
procedure TForm1.GetFilterList(graph: IFilterGraph; list: TStrings);
var EnumFilters: IEnumFilters;
BaseFilter: IBaseFilter;
FilterInfo: TFilterInfo;
begin
list.Clear;
graph.EnumFilters(EnumFilters);
While (EnumFilters.Next(1, BaseFilter, nil)=S_OK) do
begin
BaseFilter.QueryFilterInfo(FilterInfo);
list.Add(FilterInfo.achName);
end;
end;
procedure TForm1.ListBox1DblClick(Sender: TObject);
var BaseFilter: IBaseFilter;
begin
if (listbox1.ItemIndex <> -1) then
begin
FilterGraph.FilterGraph2.FindFilterByName(StringToOleStr(listbox1.Items.Strings[listbox1.ItemIndex]), BaseFilter);
ShowFilterPropertyPage(BaseFilter);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -