我可以从DirectShow获取原始视频帧而无需播放

时间:2012-01-19 10:19:12

标签: windows directshow ms-media-foundation

我正在使用Media Foundation处理媒体播放器。我想支持VOB文件播放。但是,媒体基金会目前不支持VOB容器。因此我希望使用DirectShow。

我的想法不是使用DirectsShow图形来获取备用路径,而是抓住视频帧并将其传递到媒体基础中的相同管道。在媒体基础上,我有一个'IMFSourceReader',它只是从视频文件中读取帧。是否有直接显示等效,它只是给我框架而不需要创建图形,开始播放周期,然后尝试从渲染引脚中提取帧? (更清楚的是,DirectsShow是否支持一种架构,它可以在不实际播放视频的情况下为我提供原始帧?)

我已经阅读过有关ISampleGrabber的内容,但已弃用,我认为它不适合我的架构。我之前没有在DirectShow上工作过。

谢谢, MOTS

2 个答案:

答案 0 :(得分:6)

您必须构建一个图表并接受来自相应解析器/解复用器过滤器的帧,该过滤器将读取容器并在其输出上传递单个帧。

播放不一定是实时的,也不需要在某处伪造那些视频帧。获得Sample Grabber过滤器或客户过滤器所需的数据后,您可以使用Null Renderer终止管道。也就是说,您可以以一种或多或少的方式安排获取所需的帧。

答案 1 :(得分:0)

您可以使用Monogram frame grabber filter连接VOB DS过滤器的输出 - 效果很好。请参阅那里的注释,了解如何将输出连接到外部应用程序。