2017-05-08 43 views
1

我使用Windows Media Foundation C++播放音頻和視頻文件。 我的應用程序基本上是基於媒體基礎指南 - http://msdn.microsoft.com/en-us/library/ms697062%28v=VS.85%29.aspxWindows Media Foundation - 右揚聲器不工作

我的問題是,當我播放媒體文件時,音頻僅從左揚聲器呈現。

一些更多的信息:

  1. 的問題發生的音頻和視頻文件兩者。

  2. 我的拓撲結構是一個經典的輸入節點 - >傳輸節點 - >輸出節點。 音頻流在輸出節點的輸出中看起來沒問題(這是一個float32流,它沒有右揚聲器的交錯零)。

  3. 拓撲中的Transfer-Node用於未來的均衡器,但目前它什麼也不做。即使我從拓撲中刪除它,問題仍然會發生。

我想這個問題可能發生是因爲Media Foundation的某些配置錯誤,但我還沒有發現任何關於Media Foundation Guide的順序。

任何想法可能是什麼問題? 我很樂意分享相關代碼示例或給出有關我的實現的任何其他相關信息。

謝謝。

回答

1

聽起來好像您的源節點正在提供單通道數據流,或者輸出節點的輸入媒體類型是單通道。如果是後一種情況,則媒體會話正在注入一種將輸入流縮混爲單個頻道以符合媒體類型的轉換。

我會檢查兩個節點的媒體類型,看看是否是這個問題。

+0

您好托馬斯, 謝謝您的答覆。 – Noam

+0

能不能介紹一下如何制定檢索媒體類型我嘗試使用GetInputPrefType(),但到目前爲止我無法使它工作,我不確定這是什麼意思。 – Noam

+0

要獲得節點的實際媒體類型,您必須獲取節點的因爲這個問題很可能與源代碼有關,我可能會首先在那裏檢查,爲了得到源的媒體類型,使用來自IMFMediaSource的流描述符,Source-> CreatePresentationDescriptor-> GetStreamDescriptorByIndex->​​ GetMediaTypeHandler-> GetCurrentMediaType如何做到這一點的流程。關於如何建立的代碼d如果沒有幫助,您的拓撲結構將對提供確切的詳細信息非常有用。 – ThomasP

1

我發現了這個問題。 這是一個濫用waveOutSetVolume()函數,使我的右揚聲器(我用它的值爲0xFFFF而不是0xFFFFFFFF)靜音。 不知怎的,我在多個代碼審查調試這個問題,當我在做已經錯過了:( 在所有所以沒有涉及到媒體基金會。

相關問題