用VideoCap控件,如何选择指定的摄像头(视频源)? ( 积分: 100 )

  • 主题发起人 主题发起人 八木
  • 开始时间 开始时间

八木

Unregistered / Unconfirmed
GUEST, unregistred user!
程序需要接两个摄像头,显示两个画面,用的是VideoCap控件,打开第一个画面正常,打开第二个画面时,总弹出一个对话框,让选择视频源.
有什么办法避开对话框,让程序显示指定的摄像头(视频源)?
 
期望高手出现..
 
我有一个,但不是用VideoCap控件,是用我开发的视频语音组件
 
遇到过,听课
 
好象有个什么index的 选择等于0就行了。
 
只接一个USB摄像头时,Driverindex设为0没有问题,因两个摄像头要同时工作,Driverindex都设为0时,打开第二个头时会出现选择对话框.而把Driverindex设为0以外的数都不能工作.
 
//列出可用的音视频设备
PROCEDURE TfrmAVset.EnumAudioDevices();
var
vt: OleVariant;
I:integer;
myinifile:tinifile;
TEMPADINDEV:INTEGER;
TEMPADOUTDEV:INTEGER;
TEMPVDCAPDEV:INTEGER;
begin

TRY
myinifile:=tinifile.Create(ExtractFilePath(Application.ExeName)+'config.ini');
TEMPADINDEV:=myinifile.READInteger('AVCHAT','ADINDEVNO',-2);
TEMPADOUTDEV:=myinifile.READINTEGER('AVCHAT','ADOUTDEVNO',-2);
TEMPVDCAPDEV:=MYINIFILE.READInteger('AVCHAT','VDINDEVNO',-2);

VOCINPUTDEVNO:=-2;
//-2表示设备为NOTHING,停止工作
//取得音频输入设备名称到一个CONNECTION
VBACollection1.ConnectTo(_Collection(AudCap1.Devices));
//在COMBOX中列出所有音频输入设备名称
FOR I:=1 TO vbacollection1.Countdo

begin

vt := Variant(i);
VOCINPUTDEV.Items.Add(VBACollection1.Item(vt));
end;

//设定默认的音频输入设备名称
IF VOCINPUTDEV.Items.COUNT>0 then

begin

IF (TEMPADINDEV>=0) AND (TEMPADINDEV<VOCINPUTDEV.Items.Count) then

begin

VOCINPUTDEV.ItemIndex:=TEMPADINDEV;
VOCINPUTDEVNO:=TEMPADINDEV;
end;

end;


VOCOUTPUTDEVNO:=-2;
//-2表示设备为NOTHING,停止工作
//取得音频输出设备名称到一个CONNECTION
VBACOLLECTION1.ConnectTo(_COLLECTION(AUDRND1.Devices));
//在COMBOX中列出所有音频输出设备名称
FOR I:=1 TO vbacollection1.Countdo

begin

vt := Variant(i);
VOCoutPUTDEV.Items.Add(VBACollection1.Item(vt));
end;

//设定默认的音频输出设备名称
IF VOCOUTPUTDEV.Items.COUNT>0 then

begin

IF (TEMPADOUTDEV>=0) AND (TEMPADOUTDEV<VOCOUTPUTDEV.Items.Count) then

begin

VOCOUTPUTDEV.ItemIndex:=TEMPADOUTDEV;
VOCOUTPUTDEVNO:=TEMPADOUTDEV;

end;

end;


VIDEOCAPDEVNO:=-2;
//取得视频输入设备名称到一个CONNECTION
VBACOLLECTION1.ConnectTo(_COLLECTION(VIDCAP1.Devices));
//在COMBOX中列出所有音频输出设备名称
FOR I:=1 TO vbacollection1.Countdo

begin

vt := Variant(i);
VIDINPUTDEV.Items.Add(VBACollection1.Item(vt));
end;

//设定默认的视频输入设备名称
IF VIDINPUTDEV.Items.COUNT>0 then

begin

IF (TEMPVDCAPDEV>=0) AND (TEMPVDCAPDEV<VIDINPUTDEV.Items.Count) then

begin

VIDINPUTDEV.ItemIndex:=TEMPVDCAPDEV;
VIDEOCAPDEVNO:=TEMPVDCAPDEV;
end;

end;

EXCEPT
ON E:EXCEPTIONdo

begin

SHOWERROR('gantandiag',e.Message);
end;

end;

end;

//----------------
 
后退
顶部