我也是媒体基础编程和Windows编程的新手。
这可能看起来很愚蠢,但我在任何地方都没有得到明确答案。
我的应用是捕获屏幕,缩放,编码并将数据发送到网络。我希望改善我的管道的性能。所以我想改变一些中间库,如缩放或编码库。
当我进行大量搜索以获得更好的缩放和编码选项时,我最终得到了一些MFT(媒体基础变换),例如Video Processor MFT和H.264 Video Encoder MFT。
我的应用程序已经实现了管道,我不想改变完整的架构。
我们可以直接使用MFT作为库并添加到我的项目中吗?或者我必须建立完整的管道,源和接收器。 根据Media Foundation的架构,MFT是中间块。它需要IMFTransform :: GetInputStreamInfo和IMFTransform :: GetOutputStreamInfo。 是否可以通过创建完整的管道来调用MFT的直接API来执行(缩放和编码)?
如果已经提出任何类似问题,请提供链接。
答案 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)处理模型。