使用Media Foundation播放IMFSamples

时间:2017-03-17 05:33:49

标签: c++ winapi video ms-media-foundation

我正在使用Windows Media Foundation创建示例应用程序。

我使用了源阅读器IMFSourceReader来阅读媒体文件,然后使用自定义MFT IMFSamples处理样本IMFTransform之后。

在MFT中我处理过IMFSamples,如何在windows中播放/显示它们。我不想使用EVR进行显示。

我也读过这个问题:
How to play IMFMediaSample in media foundation?

根据建议,我需要使用MFPlay来播放样本,但具体如何才能完成。

在界面IMFPMediaPlayer中,我无法找到任何可以推送媒体样本的方法 https://msdn.microsoft.com/en-us/library/windows/desktop/dd374329(v=vs.85).aspx

1 个答案:

答案 0 :(得分:0)

IMFSample是原始数据的包装器。如果您碰巧放弃了用于播放/演示的标准API产品(例如视频的EVR),则必须从媒体示例对象中提取数据并以其他方式使用它,例如您自行决定使用其他API。

这不一定是完全可视化,您不限于消费理念:写入文件,通过网络发送等。为了可视化,您可以选择其他Windows API:DirectX,DirectShow,传统DirectDraw,GDI,GDI + ,Direct2D等。

IMFSample不会立即被其他API接受,因为它不是它的设计目的。在Media Foundation API中,EVR专为演示而设计,EVR就是您应该使用的。

  

The video sample object is a specialized implementation of the IMFSample interface for use with the Enhanced Video Renderer (EVR)...