0

我使用 videoInput 库(使用 DirectShow)在 Windows 7 上使用 Qt 在 C++ 中开发了一个视频捕获应用程序。我的应用程序适用于我之前尝试过的所有设备(一些内置捕捉设备、网络摄像头、Pinnacle Dazzle DVC 100、Pinnacle Studio 电影盒,甚至是有问题的 PixelView PlayTV USB Hybrid),但现在我购买了 AVerMedia DarkCrystal HD Capture Station(为了支持高清拍摄),它根本无法工作。

根据圆刚网站的说法,它完全兼容 DirectShow,我什至不需要使用它的 SDK。我按照制造商的安装说明进行操作,并且可以使用它自己的捆绑软件(TotalMedia Studio MV)来捕捉视频,所以我想它工作正常。

我尝试运行基于 videoInput 的应用程序以及 AmCap(来自 Microsoft 的 DirectShow 示例),它们的行为方式相同。他们能够找到该设备,检索其友好名称,但没有别的。AmCap 说Error 80004002: Cannot find VCapture:IAMStreamConfig

我在调试 AmCap,发现ICaptureGraphBuilder2::FindInterface方法总是返回E_NOINTERFACE,即不支持这样的接口,如下所示:

hr = gcap.pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
                                      &MEDIATYPE_Video, gcap.pVCap,
                                      IID_IAMStreamConfig, (void **)&gcap.pVSC);

这里,gcap.pBuilder是指向 的指针ICaptureGraphBuilder2gcap.pVCap是指向 的指针IBaseFiltergcap.pVSC是指向IAMStreamConfig并且应该接收返回值的指针。

我想有一些解决方法可以帮助我从这个设备中捕获,因为我可以成功地检索设备名称(使用ICreateDevEnum::CreateClassEnumerator基于CLSID_VideoInputDeviceCategory类标识符的方法)。

4

1 回答 1

0

没有实现的视频捕获设备IAMStreamConfig是一种可能的情况,尽管它不是预期的。实际上,它更像是视频设备或底层驱动程序上的错误,但是您可能希望更新您的应用程序以使用默认媒体类型以防丢失IAMStreamConfig(您仍然可以使用 GraphEdit 检查设备是否可操作)。

于 2013-04-11T06:29:26.447 回答