讀取多重通道音訊

[與此頁面相關聯的功能 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

最後,若要離散輸出通道,且沒有折迭為身歷聲,您必須遵循下列步驟,在輸出上設定正確的媒體類型:

  1. 呼叫 IWMReader::GetOutputFormatCount 以取得相關音訊輸出的支援格式數目。 輸出格式索引是以零起始。
  2. 針對每個支援的格式,呼叫 IWMReader::GetOutputFormat 以擷取輸出媒體屬性物件上的 IWMOutputMediaProps 介面。
  3. 呼叫 IWMMediaProps::GetMediaType 以擷取媒體類型。
  4. 如果擷取的媒體類型是所需的多重通道類型,則呼叫 IWMReader::SetOutputProps加以設定。

設定離散輸出和喇叭組態之後,讀取器所列舉的輸出格式應該包含多重通道格式,這些格式會使用 「要求」XTENSIBLE 結構。 如果您在設定屬性之前列舉輸出格式,則只會包含 1 或 2 個通道的格式,且每個通道最多會包含 16 位。 如同其他音訊格式,您應該只使用讀取器列舉的格式;請勿自行設定。

注意

只有在您的應用程式是在 Microsoft Windows XP 或更新版本的 Microsoft Windows 上執行時,才能輸出多重通道音訊。

 

輸入、資料流程和輸出

讀取 ASF 檔案

輸出設定

使用 High-Resolution PCM 音訊