C# 未调用ISampleGrabber回调
我正在使用DirectShow.Net并试图在类上实现ISampleGrabberCB 为了在图中设置抓取器,我遵循以下清单:C# 未调用ISampleGrabber回调,c#,wpf,directshow,directshow.net,C#,Wpf,Directshow,Directshow.net,我正在使用DirectShow.Net并试图在类上实现ISampleGrabberCB 为了在图中设置抓取器,我遵循以下清单: 创建SampleGrabber对象 定义MediaType格式(AMMediaType:Video、Rgb、VideoInfo)并将其设置到SampleGrabber对象中。HRESULT是0,所以我认为它是可以的 我使用sampleGrabber.SetCallback(这个,0)设置回调。我之所以传递“this”,是因为ISampleGrabber是在类本身中实现和
Gianluca.您需要将YUY2添加到RGB转换器 查找将输入引脚设置为YUY2并将输出引脚设置为RGB32。然后再添加样本抓取器
因为上面的过滤器是DMO过滤器,所以您需要使用。该链接有一个很好的使用示例。您需要添加YUY2到RGB转换器 查找将输入引脚设置为YUY2并将输出引脚设置为RGB32。然后再添加样本抓取器
因为上面的过滤器是DMO过滤器,所以您需要使用。这个链接有一个很好的使用它的例子。你从来没有提到你在图中连接了样本抓取器,这显然是必要的。因为在某个时候,回调击中了您,所以当然要以某种方式连接它,而且在您对媒体管道进行故障排除时,您首先要检查的是连接方式和有效的过滤器图拓扑 24位RGB子类型是媒体类型的一种“公分母”,因此您几乎总是可以在示例抓取器上获得它。要实现这一点,您需要使用主类型和子类型初始化样本抓取器格式。然而,您不需要在那里进行格式输入。RGB 24的解码器将自动提供
总而言之,如果某些东西不起作用,您需要知道最终得到的拓扑结构,并且样本抓取器需要进行适当的初始化。您从未提到在图形中连接样本抓取器,这显然是必要的。因为在某个时候,回调击中了您,所以当然要以某种方式连接它,而且在您对媒体管道进行故障排除时,您首先要检查的是连接方式和有效的过滤器图拓扑 24位RGB子类型是媒体类型的一种“公分母”,因此您几乎总是可以在示例抓取器上获得它。要实现这一点,您需要使用主类型和子类型初始化样本抓取器格式。然而,您不需要在那里进行格式输入。RGB 24的解码器将自动提供
总而言之,如果某些东西不起作用,您需要知道最终得到的拓扑结构,并且样本采集程序需要进行适当的初始化。@Goz:代码非常广泛,并分为几个功能。您希望看到哪个部分?根据您的编辑,最好看到您连接filters@Goz:代码非常广泛,可分为多个功能。您希望看到什么部分?根据您的编辑,可能会很高兴看到连接过滤器的部分谢谢您的回答!当我在DirectShow上迈出我的第一步时,我不知道该怎么做。你能指出一些可以帮助我的链接或提供一些片段吗?提前谢谢@Gianluca Colucci:不知道该怎么做?我已经设法让它与grpBuilder.RenderStream(PinCategory.Capture,MediaType.Video,this.capDev,null,(IBaseFilter)smpGrabber一起工作。没有它,抓取器就无法连接,我不明白它是如何工作的。接下来我有:hr=grpBuilder.RenderStream(PinCategory.Preview,MediaType.Video,this.capDev,null,Renderer);它起作用了。但这在概念上是正确的吗?谢谢你的回答!当我在DirectShow上迈出我的第一步时,我不知道该怎么做。你能指出一些可以帮助我的链接或提供一些片段吗?提前谢谢@Gianluca Colucci:不知道该怎么做?我已经设法让它与grpBuilder.RenderStream(PinCategory.Capture,MediaType.Video,this.capDev,null,(IBaseFilter)smpGrabber一起工作。没有它,抓取器就无法连接,我不明白它是如何工作的。接下来我有:hr=grpBuilder.RenderStream(PinCategory.Preview,MediaType.Video,this.capDev,null,Renderer);它起作用了。但这在概念上是正确的吗?