共用方式為


使用異步讀取器傳輸壓縮樣本

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

異步讀取器可以從 ASF 檔案中的數據流傳遞壓縮的樣本。 應用程式通常會在將數據流從一個檔案複製到另一個檔案時傳遞壓縮的範例。 不建議重新壓縮已從壓縮數據流重建的數據,因為在編碼過程中遺失數據。 已壓縮一次以上的數位媒體會明顯降低品質。

Windows 媒體格式 SDK 在從 ASF 檔案擷取數據之後,不會提供任何譯碼數據的方法。 如果您收到壓縮的範例,稍後想要解壓縮它們,則必須提供自己的程式碼來執行此動作。 解決這項限制的其中一個方法是將壓縮的樣本寫入新的 ASF 檔案,然後將它們重新讀取到一般未壓縮的範例。

若要使用異步讀取器接收壓縮的範例,請執行下列步驟。

  1. 實作 IWMReaderCallbackAdvanced::OnStreamSample 回調。 此回呼在函式中基本上與 IWMReaderCallback::OnSample 相同,不同之處在於它會依數據流編號傳遞樣本,而且樣本仍會壓縮。
  2. 開始播放之前,請先 呼叫 IWMReader::QueryInterface來取得讀取器物件的 IWMReaderAdvanced 介面指標。
  3. 藉由呼叫 IWMReaderAdvanced::SetReceiveStreamSamples,設定讀取器以傳遞所需數據流的壓縮樣本。
  4. 針對需要壓縮樣本傳遞的每個數據流重複步驟 3。

注意

影像流對壓縮數據流傳遞無效。 如果您將影像數據流從一個檔案複製到另一個檔案,它將無法在新檔案中運作。 若要將圖像串流從檔案複製到檔案,請依輸出編號擷取影像數據流範例,並將其包含在新檔案中,就像包含新的影像數據流一樣。

 

IWMReaderCallbackAdvanced 介面

使用異步讀取器讀取檔案