是否可以将自定义AsyncMFT插入IMFMediaSession(媒体会话对象是使用MFCreateMediaSession创建的(中,该自定义异步MFT已修改为接受多个MFT作为输入(例如,连接到MFTc的MFTa和MFTb(?我在网上看到过一些参考资料,其中指出需要自定义媒体会话,但这似乎有些过头了。
我已经到了mftrace(包括代码中的调试(只是在MediaSession启动时报告Catasrophi Failure(在myMediaSession->Start(NULL,&startPos(之后立即失败(的地步。拓扑加载良好,如果两个输入MFT不连接到同一节点,则它们都工作良好。
在windows 7下,这是不可能的。
阅读:多输入和多输出
微软的Becky Weiss给出答案:
MFv1管道不支持多输入MFT。碰巧Beta 2媒体会话还没有针对这一点进行明确验证
我想说,多输入MFT是Media Foundation未来版本有望支持的内容;但就目前而言,我们还没有这种支持。
我想MFv1指的是Vista,MFv2指的是Windows7。
您提供的"关于MFT"链接只是告诉您可以编写具有多个输入的转换,仅此而已。但问题不在于媒体基金会的转型。
问题是,无论您使用何种类型的连接(源>转换,转换>转换(,本机媒体会话都无法处理来自转换的多个输入流。
您收到的消息"Catasropic Failure"与我使用AudioMixerMFT和本地媒体会话收到的消息相同。
这可以在没有自定义媒体会话的Windows 10上完成吗?
我不知道。查看上面的mdsn论坛链接,昨天有人问这个。
附言:如果你选择为你的案子编写一个自定义的媒体会话,我可以帮你。由于使用了AsyncMFT,这将是一个很好的练习。
我把包含自定义媒体会话的项目移到了这里:github/mof7777(在MFNode>MFNodePlayer下(。