各位帮我看看这个Window Media Encoder SDK的问题(100分)

  • 主题发起人 主题发起人 donny2000
  • 开始时间 开始时间
D

donny2000

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WMEncoderLib_TLB, StdCtrls, ActiveX;

type
TForm1 = class(TForm)
Button1: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Encoder:WMEncoder;
SrcGrpColl:IWMEncSourceGroupCollection;
SrcGrp:IWMEncSourceGroup;
SrcVid,SrcAud:IWMEncSource;
EncodeFile:IWMEncFile;
ProColl:IWMEncProfileCollection;
// Pro :IWMEncProfile;
// i:integer;
begin

Encoder:=CoWMEncoder.Create;
SrcGrpColl:=Encoder.SourceGroupCollection;
SrcGrp:=SrcGrpColl.Add('SG_1');

SrcVid:=SrcGrp.AddSource(WMENC_VIDEO);
SrcAud:=SrcGrp.AddSource(WMENC_AUDIO);
SrcVid.SetInput('ScreenCap://ScreenCapture1','','');
SrcAud.SetInput('DEVICE://Default_Audio_Device',' ',' ');

EncodeFile:=Encoder.File_;
EncodeFile.LocalFileName:='C:/a.wmv';

ProColl:=Encoder.ProfileCollection;
{ for I:=1 to ProColl.Count-1do
begin

showmessage(ProColl.Item(i).Descrip);
end;
}
SrcGrp.Set_Profile(ProColl.item(ComboBox1.ItemIndex));

Encoder.PrepareToEncode(true);
Encoder.Start;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Encoder:WMEncoder;
ProColl:IWMEncProfileCollection;
i:integer;
begin

Encoder:=CoWMEncoder.Create;
ProColl:=Encoder.ProfileCollection;
for I:=0 to ProColl.Count-1do
begin

ComboBox1.Items.Add(ProColl.Item(i).Name);
end;

ComboBox1.ItemIndex:=0;
end;


end.


使用的是9系列的SDK,程序编译通过,但是开始捕捉的时候,出错:“找不到可用于指定源的有效插件”。我搞了一天都没有明白什么原因
 
不是很懂,只是我看你的代码,怎么程序启动时创建了控件,然后点击按键时又创建该控件呢?把下面的代码提前到implementation前试试!
Encoder:WMEncoder;
ProColl:IWMEncProfileCollection;
i:integer;
 
这个地方是贴上来得时候没有改得,但不影响。 在C#中完全正常,但是在Delphi中一样得实现就是要报上面得错误
 
是声音设备的问题吧?
把SrcAud:=SrcGrp.AddSource(WMENC_AUDIO);
SrcAud.SetInput('DEVICE://Default_Audio_Device',' ',' ');
这两行去掉应该就可以了,试试

 
多人接受答案了。
 
后退
顶部