【发布时间】:2013-09-20 10:42:09
【问题描述】:
我正在努力将两个音频流混合成一个输出流。 MFNode 有一个 AudioMixerMFT,但是当我尝试构建这样的拓扑并执行它时,TopoEdit 崩溃:
注意:我尝试了 Windows SDK 7.1 附带的 TopoEdit,也是“开发 Microsoft® 媒体基础应用程序”的作者修复很少的版本
我认为 TopoEdit 可能存在问题,因此我在代码中构建了拓扑(通过修改“开发 Microsoft® 媒体基础应用程序”的第 9 章中的代码),但它仍然失败,@ 上出现“E_UNEXPECTED Catastrophic failure” 987654325@ 在 Session Start 事件中的 HRESULT CPlayer::ProcessEvent(CComPtr<IMFMediaEvent>& mediaEvent) 内。
此时,我认为 AudioMixerMFT 可能存在问题,因此我编写了一个自定义 MFT,它有 2 个输入,其作用类似于简单的直通(仅发送第一个输入并忽略第二个输入)。我在 TopoEdit 中构建了一个拓扑,并且效果很好:
但是当我将“Audio 2.wav”连接到 MFT 时,它崩溃了。现在我尝试在我自己的代码中使用这个自定义 MFT,它再次使用单个输入但在应用两个输入时失败并出现“E_UNEXPECTED Catastrophic failure”。
不确定可能是什么问题,我开始怀疑是否支持多输入 MFT,我遇到了一个帖子 http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/21596e11-c4e2-480a-b28f-9e2f5fa8820d/mutlinput-and-multioutput(是的,它很旧)说它不支持。
有没有人能够从 MFNode 成功运行 AudioMixerMFT? Microsoft Media Foundation 的任何替代品?或任何提示将不胜感激。谢谢
【问题讨论】:
-
双输入 MFT 和 DMO 都可以工作。 DirectShow 是 MF 的替代选项。双输入 DMO 无法在 DirectShow 中开箱即用,但自定义 DirectShow 过滤器能够完成这项工作。
-
感谢@RomanR。如果您知道的话,能否请您指出一些示例双输入 MFT。顺便说一句,对可能出现的问题有任何猜测,TopoEdit 或 MFT 的问题?
-
手头没有示例代码,抱歉。您应该能够在调试器上看到连接问题(您的 MFT 在
SetOutputType中返回错误代码,或者在错误发生之前)。问题很可能出在您的 MFT 上,但问题缺乏细节来猜测它。通常,双输入组件很难实现,因为它们必须同步流,但您还没有达到这一点。