共用方式為


將音訊解碼為 S/PDIF

[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows 媒體格式 11 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

使用 Windows Media Audio 9 Professional 編解碼器編碼的音訊,可以解碼為 (S/PDIF) 。 若要產生 S/PDIF 輸出,請執行下列步驟:

  1. 呼叫 IWMReader::Open 方法,開啟包含 Windows Media Audio 9 Professional 資料流程的檔案。
  2. 識別您想要之資料流程的輸出編號。 如需詳細資訊,請參閱 識別輸出編號
  3. 呼叫 IWMReaderAdvanced2::SetOutputSetting 方法來設定 S/PDIF 輸出。 針對設定名稱使用g_wszEnableWMAProSPDIFOutput。 資料類型 WMT_TYPE_BOOL;將值設定為 TRUE 以啟用 S/PDIF 輸出。
  4. 藉由呼叫IWMReader::GetOutputFormat方法來取得所需輸出格式 (的IWMOutputMediaProps) 輸出屬性介面。 如需列舉輸出格式的詳細資訊,請參閱 指派輸出格式
  5. 呼叫 IWMReader::SetOutputProps 方法來設定輸出格式。 傳入步驟 4 中取得之 IWMOutputMediaProps 介面的指標。
  6. 進行任何其他設定變更並開始播放。

注意

您可以使用 IWMSyncReader 介面的對應方法,在同步讀取器上執行上述步驟。

 

下列範例程式碼示範如何將音訊資料流程設定為將音訊輸出為 S/PDIF 資料。 此函式假設檔案已在讀取器中載入,而且已識別輸出編號。 如需使用此程式碼的詳細資訊,請參閱 使用程式碼範例

HRESULT SetSPDIF(DWORD dwOutputNum, IWMReader* pReader)
{
    HRESULT hr = S_OK;

    IWMReaderAdvanced2*  pReaderAdv   = NULL;
    IWMOutputMediaProps* pOutputProps = NULL; 

    BOOL fValue = TRUE;

    // Get the advanced reader interface.
    hr = pReader->QueryInterface(IID_IWMReaderAdvanced2,
                                 (void**)&pReaderAdv);
    GOTO_EXIT_IF_FAILED(hr);

    // Set S/PDIF output.
    hr = pReaderAdv->SetOutputSetting(dwOutputNum, 
                                      g_wszEnableWMAProSPDIFOutput, 
                                      WMT_TYPE_BOOL, 
                                      (BYTE*)&fValue, 
                                      sizeof(BOOL));
    GOTO_EXIT_IF_FAILED(hr);

    // Get the first output format for the stream.
    // NOTE: You could also enumerate the available output formats
    // and pick one to use.

    hr = pReader->GetOutputFormat(dwOutputNum, 0, &pOutputProps);
    GOTO_EXIT_IF_FAILED(hr);

    // Set the output properties back on the reader.
    hr = pReader->SetOutputProps(dwOutputNum, pOutputProps);

Exit:
    SAFE_RELEASE(pReaderAdv);
    SAFE_RELEASE(pOutputProps);

    return hr;
}

進階主題

讀取 ASF 檔案

IWMReader 介面

IWMReaderAdvanced2 介面

IWMSyncReader 介面