我在一个DShowNET项目中使用C#,我一直在尝试多张卡。我试图访问的卡是一个GV-8004A,这是一个捕获卡,通常使用的GeoVision闭路电视软件。
问题是,在设备管理器中,它被认为是一种“DVR设备”,它的guid与我一直使用的视频输入设备不同,我不知道DShowNET guid,但相信它可能与此guid.有关。
我的问题是“如何将‘设备类guid'转换为DirectShow中使用的Guid?或者说,这些甚至可以等同?“
设备管理器中的GUID
GUID in DShowLib
编辑
基本上,最终目标是能够将它作为捕获过滤器连接到一个图形上以保存FilterCatergory.VideoInputDevice,但是现在这个设备(GeoVision)没有出现在可用的捕获设备列表中,但是它是一个捕获设备,只是驱动程序将它识别为'DVR设备‘。
我使用CLSID将它传递到DShowNET函数中,以返回该类型可用设备的ArrayList:
DsDev.GetDevicesOfCat(FilterCategory.VideoInputDevice, out m_capDevices)
我需要知道CLSID_**的DVR设备**或从哪里得到的。我认为它可以从‘设备类guid’派生出来,但我被告知这是不可能的。
发布于 2011-02-17 23:48:57
你可以用这样的东西:
const string CAPTURE = "•GeoVision GV-800A";
s_CaptureDevices = BuildDeviceList(FilterCategory.AMKSCapture, CAPTURE);
private static List<DsDevice> BuildDeviceList(Guid category, string name)
{
var list = new List<DsDevice>();
DsDevice[] devices = DsDevice.GetDevicesOfCat(category);
for (int i = 0; i < devices.Length; i++)
{
if (!string.IsNullOrEmpty(devices[i].Name) && devices[i].Name.Equals(name))
{
list.Add(devices[i]);
}
}
return list;
}另一个选项是使用GraphEditPlus并将捕获过滤器添加到图中。然后,您可以找到GUID,直接使用如下代码创建过滤器对象:
var captureFilter = (IBaseFilter) Activator.CreateInstance(Type.GetTypeFromCLSID(new DsGuid("...guid...")));https://stackoverflow.com/questions/4225501
复制相似问题