我可以在没有播放的情况下从DirectShow获取原始video帧吗?

我正在使用媒体基础工作媒体播放器。 我想支持VOB文件播放。 但是,媒体基础目前不支持VOB容器。 因此我希望使用DirectShow。

我的想法是不使用DirectsShowgraphics来替代path,而只是抓取一个video帧,并把它传递给媒体基础中的相同pipe道。 在媒体基础上,我有一个“IMFSourceReader”,它只是从video文件中读取帧。 是否有直接显示的等价物,它只是给我的帧,而不需要创build一个graphics,开始播放循环,然后试图从渲染引脚提取帧? (更清楚的是,DirectsShow是否支持这样的架构,它可以给我原始帧,而不必真正播放video?)

我已经阅读了关于ISampleGrabber,但它不赞成,我认为它不适合我的架构。 我以前没有在DirectShow上工作过。

谢谢,Mots

你必须建立一个图形,并从相应的解析器/解复用器过滤器接受帧,它将读取容器并在其输出上传送单独的帧。

播放不一定是实时的,也不需要在某个地方伪造这些视频帧。 一旦您在Sample Grabber过滤器或客户过滤器中获取了所需的数据,就可以使用Null Renderer终止流水线。 也就是说,你可以安排得到你需要的框架或多或少方便。

您可以使用Monogram图像采集卡滤镜来连接VOB DS滤镜的输出 – 效果很好。 请参阅那里的注释以了解如何将输出连接到外部应用程序。