讀取多重通道音訊
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
Windows Media Audio 9 Professional 編解碼器可以將多重通道音訊編碼 (兩個以上的通道) 。 讀取具有多重通道音訊的檔案時,您必須正確設定輸出,否則音訊會以較低的品質傳遞,並以身歷聲顯示。 若要設定多重通道音訊傳遞的輸出,您必須設定兩個輸出設定:g_wszEnableDiscreteOutput和g_wszSpeakerConfig。
將g_wszEnableDiscreteOutput設定為 TRUE ,會將編解碼器設定為傳遞高畫質音訊輸出。 高畫質音訊是由 Windows Media Audio 9 編解碼器編碼,具有 24 位樣本的身歷聲或多個通道。 如果此設定為 FALSE,則只會傳遞 16 位身歷聲輸出。
播放電腦上的喇叭數目會設定為 g_wszSpeakerConfig。 此設定是設定為下表所列其中一個 DirectSound 說話者常數的 DWORD 值。 若要解析編譯器的這些常數名稱,您必須包含 dsound.h。
常數 | 值 | 描述 |
---|---|---|
DSSPEAKER_DIRECTOUT | 0x00000000 | 音訊會直接通過,而不需為喇叭設定。 |
DSSPEAKER_HEADPHONE | 0x00000001 | 用戶端電腦配備耳機。 |
DSSPEAKER_MONO | 0x00000002 | 用戶端電腦配備單一喇叭。 |
DSSPEAKER_QUAD | 0x00000003 | 用戶端電腦配備二次語音喇叭。 |
DSSPEAKER_STEREO | 0x00000004 | 用戶端電腦配備身歷聲喇叭。 |
DSSPEAKER_SURROUND | 0x00000005 | 用戶端電腦配備四通道環繞音效喇叭。 |
DSSPEAKER_5POINT1 | 0x00000006 | 用戶端電腦配備五個喇叭和一個子電腦。 |
DSSPEAKER_7POINT1 | 0x00000007 | 用戶端電腦配備七個喇叭和一個子電腦。 |
若要設定這些設定,請使用 IWMReaderAdvanced2::SetOutputSetting。
最後,若要離散輸出通道,且沒有折迭為身歷聲,您必須遵循下列步驟,在輸出上設定正確的媒體類型:
- 呼叫 IWMReader::GetOutputFormatCount 以取得相關音訊輸出的支援格式數目。 輸出格式索引是以零起始。
- 針對每個支援的格式,呼叫 IWMReader::GetOutputFormat 以擷取輸出媒體屬性物件上的 IWMOutputMediaProps 介面。
- 呼叫 IWMMediaProps::GetMediaType 以擷取媒體類型。
- 如果擷取的媒體類型是所需的多重通道類型,則呼叫 IWMReader::SetOutputProps加以設定。
設定離散輸出和喇叭組態之後,讀取器所列舉的輸出格式應該包含多重通道格式,這些格式會使用 「要求」XTENSIBLE 結構。 如果您在設定屬性之前列舉輸出格式,則只會包含 1 或 2 個通道的格式,且每個通道最多會包含 16 位。 如同其他音訊格式,您應該只使用讀取器列舉的格式;請勿自行設定。
注意
只有在您的應用程式是在 Microsoft Windows XP 或更新版本的 Microsoft Windows 上執行時,才能輸出多重通道音訊。
相關主題