如何在Windows应用程序中使用MFT而不使用媒体转换管道

时间:2016-02-15 05:54:15

标签: c++ windows encoding ms-media-foundation mft

我也是媒体基础编程和Windows编程的新手。

这可能看起来很愚蠢,但我在任何地方都没有得到明确答案。

我的应用是捕获屏幕,缩放,编码并将数据发送到网络。我希望改善我的管道的性能。所以我想改变一些中间库,如缩放或编码库。

当我进行大量搜索以获得更好的缩放和编码选项时,我最终得到了一些MFT(媒体基础变换),例如Video Processor MFTH.264 Video Encoder MFT

我的应用程序已经实现了管道,我不想改变完整的架构。

我们可以直接使用MFT作为库并添加到我的项目中吗?或者我必须建立完整的管道,源和接收器。 根据Media Foundation的架构,MFT是中间块。它需要IMFTransform :: GetInputStreamInfo和IMFTransform :: GetOutputStreamInfo。 是否可以通过创建完整的管道来调用MFT的直接API来执行(缩放和编码)?

如果已经提出任何类似问题,请提供链接。

1 个答案:

答案 0 :(得分:1)

是的,您可以直接创建此IMFTransform并将其与管道隔离使用。这是编码器MFT的非常典型的使用模型。 您需要配置输入/输出媒体类型,开始流式传输,馈送输入帧和抓取输出帧。

根据您的转换是同步还是异步(可能因MFT的硬件或软件实现而异),您可能需要使用基本(https://msdn.microsoft.com/en-us/library/windows/desktop/aa965264(v=vs.85).aspx)或异步(https://msdn.microsoft.com/en-us/library/windows/desktop/dd317909(v=vs.85).aspx)处理模型。