使用 MediaFoundation 指定完整拓扑



我为仅包含一个流(无音频(的视频文件创建了一个拓扑。

它包含三个按顺序连接的节点:

  • 源流节点
  • 作为转换节点的Mpeg4Part2VideoDecoder
  • EVR 作为输出节点的激活对象

调用 SetTopology((,允许部分拓扑会导致工作播放。但是,我正在尝试自己解决完整的拓扑。

因此,我首先需要将输出节点绑定到媒体接收器。我遵循了手册中指定的准则,所有必需的调用似乎都成功了。设置完整拓扑时,我收到MESessionTopologySet事件。

不幸的是,播放不起作用,但我没有任何错误。

  • 创建完整拓扑时还需要什么吗?
  • 我记得在 msdn 文档中的某处读到,设置部分拓扑时使用的拓扑加载程序也设置媒体类型。这是必需的吗,如果是,我在哪里可以找到有关此的更多信息?

Matt Andrews在msdn论坛上为我回答了这个问题。

如果你是,你肯定需要协商你自己的媒体类型 绕过拓扑加载程序。 这意味着获取源的 来自 IMFMediaTypeHandler 的媒体类型,将其设置在下游 转换,然后针对链中的每个节点,查询 可用的输入和输出类型,用于查找兼容的媒体类型。 它 除非您有特定需求,否则使用拓扑加载器要容易得多 以避免它。

最新更新