如何在没有拓扑的情况下将 Windows Media Foundation 与 UWP 结合使用

Posted

技术标签:

【中文标题】如何在没有拓扑的情况下将 Windows Media Foundation 与 UWP 结合使用【英文标题】:How to use Windows Media Foundation with UWP without a topology 【发布时间】:2017-11-01 16:55:49 【问题描述】:

为了了解 Hololens 的 Microsoft 示例 MixedRemoteViewCompositor,我一直在阅读 Polinger 的书“开发 Microsoft 媒体基础应用程序”。文本的一个关键概念是媒体基础组件是连接到称为拓扑的图形结构的 COM 对象。但是,示例代码适用于通用 Windows 平台 (UWP),并且代码中的任何位置都不存在“拓扑”一词。代码中不存在创建拓扑的调用。

所以我的问题是 UWP 应用程序是否使用媒体基础中的拓扑,如果不是,如何将媒体基础 COM 组件连接在一起以形成处理管道?示例代码有源和汇,但我不知道它们是如何连接的。

斯科特

【问题讨论】:

Media Foundation 有两种架构:TopologyReader/Writer - Topology 基于 COM 技术 - 它允许创建 COM 媒体对象并注入到 Topology 处理管道中。 Reader/Writer 隐藏管道。 UWP 是为宽类型平台开发的,并且对在不同平台上使用相同的要求很高 - 因此,UWP 限制了对 OS 的低级元素的访问 - COM 是低级元素。在 UWP 上 Reader/Writer 仅适用于 MF 架构 - 它允许配置媒体文件/流读取器、媒体文件/流写入器,但不允许使用拓扑。 那么是否可以将媒体基础转换 (MFT) 与 UWP 架构一起使用? 是的。如果您想使用 IMFTransform 接口添加您的组件 - 那么您必须使用具有 IMFSourceReaderEx 接口的组件 - 它具有 AddTransformForStream 方法 - 将转换(例如音频或视频效果)添加到流中。 【参考方案1】:

So my question is whether UWP applications use a topology in Media Foundation

首先,IMFTopologyNode 接口在 UWP 中是不允许的。

其次,包含IMFTopologyNodeIMFTopology接口在UWP中是不允许的。

第三,由IMFTopology创建媒体管道的IMFMediaSession接口在UWP中是不允许的,

第四,MFCreateMediaSession - UWP 中不允许创建IMFMediaSession 的“C”函数。

not how does one connect the Media Foundation COM components together to form a processing pipeline? - 它在具有IMFSourceReader 和IMFSinkWriter 的MF 组件之后完成 - 开发人员不能 可以直接访问这些处理管道。

So is it possible to use Media Foundation Transforms (MFT) with the UWP architecture? 是的。 如果你想用IMFTransform 接口添加你的组件 - 那么你必须使用带有IMFSourceReaderEx 接口的组件 - 它有方法AddTransformForStream - Adds a transform, such as an audio or video effect, to a stream.

关于How create Source Reader你可以在那里阅读-Source Reader

【讨论】:

以上是关于如何在没有拓扑的情况下将 Windows Media Foundation 与 UWP 结合使用的主要内容,如果未能解决你的问题,请参考以下文章

在没有 Azure 的情况下将原始数据发送到 Windows 商店应用程序

在没有 SSL 的情况下将 https 重定向到 http - IIS 7

Django:如何在没有''的情况下将数组传输到javascript?

如何在没有 usermod 的情况下将用户添加到组?

如何在没有循环的情况下将文件逐行读入变量

如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar?