Windows Media Foundation - 右侧发言者不起作用

时间:2017-05-08 06:53:40

标签: c++ windows audio ms-media-foundation

我使用Windows Media Foundation C ++播放音频和视频文件。 我的申请几乎基于媒体基金会指南 - http://msdn.microsoft.com/en-us/library/ms697062%28v=VS.85%29.aspx

我的问题是,当我播放媒体文件时,音频仅从左扬声器呈现。

更多信息:

  1. 音频和视频文件都会出现问题。

  2. 我的拓扑结构是一个经典的输入节点 - >传输节点 - >输出节点。 音频流在输出节点的输出中看起来没问题(它是一个float32流,并且右扬声器没有交错零)。

  3. 拓扑中的传输节点用于未来的均衡器,但目前它什么都不做。即使我从拓扑中删除它,问题仍然存在。

  4. 我认为问题可能因为媒体基金会的一些配置错误而发生,但我没有找到与媒体基金会指南有关的任何内容。

    知道可能是什么问题吗? 我很乐意分享相关的代码示例或提供有关我的实现的任何其他相关信息。

    感谢。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

我发现了问题。 这是对waveOutSetVolume()函数的误用,它使我的右扬声器静音(我使用值为0xFFFF而不是0xFFFFFFFF)。 不知怎的,我在调试这个问题的过程中错过了多次代码审查:( 因此根本与媒体基金会无关。