使用非同步讀取器讀取檔案

非同步讀取器會使用多個執行緒和非同步呼叫,從 ASF 檔案讀取內容。 非同步讀取器所支援的功能,使其非常適合將內容轉譯給終端使用者的應用程式。

讀取器物件最基本的功能可以細分為下列步驟。 在這些步驟中,「應用程式」是指您使用Windows媒體格式 SDK 撰寫的程式。

  1. 應用程式會實作 IWMReaderCallback 介面,以處理來自讀取器的訊息。 這包括兩個回呼方法: OnStatus,其會接收與讀取器各種層面狀態相關的訊息,以及從讀取器接收未壓縮樣本的 OnSample
  2. 應用程式會傳遞至讀取者要讀取的檔案名。 當讀取器開啟檔案時,它會將輸出編號指派給每個資料流程。 如果檔案使用互斥,讀取器會指派所有互斥資料流程的單一輸出。
  3. 應用程式會從讀取器取得各種輸出組態的相關資訊。 收集的資訊可讓應用程式正確轉譯媒體範例。
  4. 應用程式會指示讀取器開始從檔案讀取資料。 讀取器會開始在包裝于緩衝區物件的緩衝區中,一次一次將未壓縮的樣本傳遞至 OnSample 回呼。 讀取器所傳遞的範例會依簡報時間順序排列。 讀取器會繼續傳遞範例,直到應用程式停止或到達檔案結尾為止。
  5. 應用程式負責在讀取器傳遞資料之後轉譯資料。 Windows媒體格式 SDK 不提供任何轉譯常式。 一般而言,應用程式會使用其他 SDK 來轉譯資料,例如 Microsoft DirectX® SDK,或 Microsoft Windows 平臺 SDK的多媒體功能。
  6. 讀取完成時,應用程式會指示讀取器關閉檔案。

這些步驟會在 AudioPlayer 範例應用程式中說明,以及其他步驟。 如需詳細資訊,請參閱 範例應用程式

讀取器也支援更進階的功能。 讀取器可讓您執行下列動作:

  • 暫停檔案的播放。
  • 擷取讀取器效能統計資料。
  • 控制互斥資料流程的資料流程選取。
  • 手動設定用於輸出的緩衝區。
  • 提供您自己的時鐘。
  • 擷取檔作業的狀態, (緩衝、下載或儲存) 。
  • 使用標準 COM 介面 IStream開啟檔案。
  • 搜尋 ASF 檔案中的特定點。
  • 從檔案的標頭讀取設定檔資料。

下列各節將詳細說明讀取器物件的用法。

讀取 ASF 檔案

讀取器物件