2010-11-19 3 views
2

Я использую DShowNET в проекте C#, и я пытался использовать несколько карт. Картой, к которой я пытаюсь получить доступ, является GV-800_4A, которая является карточкой захвата, обычно используемой программным обеспечением GeoVision CCTV.Отсутствует GUID DirectShow для устройства DVR

Проблема заключается в распознавании в диспетчере устройств как «устройства DVR» с другим направляющим устройством, чем обычные устройства ввода видео, которые я использовал , и я НЕ знаю руководство DShowNET, но считаю, что это может относиться к это руководство.

Мой вопрос: «Как я могу преобразовать „класс“GUID устройства видели в устройствах свойств окна диспетчера устройств с Guid, используемых в DirectShow? или эти равнодушные? »

в GUID, менеджер устройств

  • GeoVision GV-800A {4d36e96c-E325-11CE-bfc1-ab}
  • AVerMedia{4d36e96c-E325-11CE-BFC1-08002BE10318}
  • Dazzle USB{4d36e96c-E325-11CE-BFC1-08002BE10318}

идентификатор GUID в DShowLib

  • VideoInputDevice (0x860BB310, 0x5D01, 0x11d0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86)

РЕДАКТИРОВАТЬ

В основном конечная цель - уметь подключать это как фильтр захвата к графику, чтобы сохранить FilterCatergory.VideoInputDevice, но теперь это устройство (GeoVision) не появляется в списке доступных устройств захвата, но это устройство захвата только водители признают его как «DVR Device»

я использую CLSID путем передачи его в функцию DShowNET для возвращения ArrayList доступных устройств такого типа:

DsDev.GetDevicesOfCat(FilterCategory.VideoInputDevice, out m_capDevices)

мне нужно знать CLSID _ [** DVR Device **] или где получить это. Я думал, что это может быть получено из «Device class guid», но мне говорят, что это невозможно.

+0

Что вы пытаетесь сделать с Guid в directshow.net? Это поможет нам выяснить, какое руководство вам необходимо. –

ответ

0

Вы могли бы использовать что-то вроде этого:

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..."))); 

 Смежные вопросы

  • Нет связанных вопросов^_^