Windows媒体基金会 – 右扬声器不起作用

我正在使用Windows Media Foundation C ++播放audio和video文件。 我的应用程序基本上是基于媒体基础指南 – http://msdn.microsoft.com/en-us/library/ms697062%28v=VS.85%29.aspx 。

我的问题是,当我播放媒体文件时,audio只能从左扬声器渲染。

一些更多信息:

  1. audio和video文件都会发生问题。

  2. 我的拓扑是一个经典的input节点 – >传输节点 – >输出节点。 audiostream在输出节点(这是一个float32stream,它没有正确的扬声器交错零)的输出看起来没问题。

  3. 拓扑中的Transfer-Node用于未来的均衡器,但目前它什么都不做。 即使我从拓扑中删除它,问题仍然会发生。

我想这个问题可能是因为媒体基金会的一些错误configuration而发生的,但是我还没有发现任何关于媒体基础指南的顺序。

任何想法可能是什么问题? 我很乐意分享相关的代码示例或给出有关我的实现的任何其他相关信息。

谢谢。

这听起来像是你的源节点正在提供单通道数据流,或者输出节点的输入媒体类型是单通道。 如果是后者,则媒体会话正在注入一个将输入流缩混为单个通道以符合媒体类型的转换。

我会检查两个节点的媒体类型,看看是否是这个问题。

我发现了这个问题。 这是一个滥用waveOutSetVolume()函数,我的右扬声器(我用它的价值0xFFFF而不是0xFFFFFFFF)静音。 不知何故,我已经错过了我在调试这个问题时所做的多个代码评论:(所以根本不涉及到媒体基础。