我正在使用DirectShow库(.NET)捕获视频,我有一个通过BNC输出视频的模拟设备,我将它连接到通过USB连接到我的计算机的FrameGrabber硬件(http://www.videohome.com.tw/eng/products-detail.php?p_id=72&level1_id=18),我是告诉我模拟设备以720x576的速度输出视频,但我得到的视频为640x480,在网站上它表示FrameGrabber支持720x576。
为了简单起见,我尝试做下面DxLogo示例中描述的内容(我正在使用一些更自定义的东西,现在不确定为什么 - 可能会更改为使用DxLogo中的Capture)我得到了与我的程序相同的结果,只是认为这将是一个更好的代码参考。
我发送Capture类以720 x 576显示,它进入并在IAMStreamConfig上执行SetFormat,返回0(成功),但是当调用RenderStream方法时,它返回:-2147024809并失败。我无法找到有关为何会发生这种情况的太多信息。
在我的其他代码中,我使用了GetNumberOfCapabilities,当使用GetStreamCaps覆盖它们时,我找到了一个720x576,我用它做了SetFormat到IAMStreamConfig并且它成功了,但从RenderStream得到了相同的结果。
答案 0 :(得分:0)
当前/默认捕获模式为640x480,如果不更改它,您可以捕获视频并获得640x480。所以你需要change capture mode using IAMStreamConfig::SetFormat
得到720x576,看起来你正在尝试它,但它看起来你选择了一些由帧抓取器驱动程序宣传的格式,并且它不被接受。您需要检查格式(媒体类型详细信息),也许有些问题(特别是它指示隔行扫描的内容),或者只是构建您自己的正确媒体类型并通过IAMStreamConfig::SetFormat
调用传递它。 / p>