使用非同步讀取器讀取檔案
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows 媒體格式 11 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
非同步讀取器會使用多個執行緒和非同步呼叫,從 ASF 檔案讀取內容。 非同步讀取器所支援的功能,使其非常適合將內容轉譯給終端使用者的應用程式。
讀取器物件最基本的功能可以細分為下列步驟。 在這些步驟中,「應用程式」是指您使用 Windows 媒體格式 SDK 撰寫的程式。
- 應用程式會實作 IWMReaderCallback 介面,以處理來自讀取器的訊息。 這包括兩個回呼方法: OnStatus,其會接收與讀取器各種層面狀態相關的訊息,以及從讀取器接收未壓縮樣本的 OnSample。
- 應用程式會傳遞至讀取者要讀取的檔案名。 當讀取器開啟檔案時,它會將輸出編號指派給每個資料流程。 如果檔案使用互斥,讀取器會指派所有互斥資料流程的單一輸出。
- 應用程式會從讀取器取得各種輸出組態的相關資訊。 收集的資訊可讓應用程式正確轉譯媒體範例。
- 應用程式會指示讀取器開始從檔案讀取資料。 讀取器會開始在包裝于緩衝區物件的緩衝區中,一次一次將未壓縮的樣本傳遞至 OnSample 回呼。 讀取器所傳遞的範例會依簡報時間順序排列。 讀取器會繼續傳遞範例,直到應用程式停止或到達檔案結尾為止。
- 應用程式負責在讀取器傳遞資料之後轉譯資料。 Windows 媒體格式 SDK 不提供任何轉譯常式。 一般而言,應用程式會使用其他 SDK 來轉譯資料,例如 Microsoft DirectX® SDK,或 Microsoft Windows 平臺 SDK的多媒體功能。
- 讀取完成時,應用程式會指示讀取器關閉檔案。
這些步驟會在 AudioPlayer 範例應用程式中說明,以及其他步驟。 如需詳細資訊,請參閱 範例應用程式。
讀取器也支援更進階的功能。 讀取器可讓您執行下列動作:
- 暫停檔案的播放。
- 擷取讀取器效能統計資料。
- 控制互斥資料流程的資料流程選取。
- 手動設定用於輸出的緩衝區。
- 提供您自己的時鐘。
- 擷取檔作業的狀態, (緩衝、下載或儲存) 。
- 使用標準 COM 介面 IStream開啟檔案。
- 搜尋 ASF 檔案中的特定點。
- 從檔案的標頭讀取設定檔資料。
下列各節將詳細說明讀取器物件的用法。
- 在 OnStatus 回呼中實作讀取器訊息
- 實作 OnSample 回呼
- 若要建立讀取器並開啟檔案
- 使用非同步讀取器擷取媒體範例
- 使用非同步讀取器依時間搜尋
- 使用非同步讀取器依框架編號搜尋
- 使用非同步讀取器搜尋 SMPTE 時間程式碼
- 若要搜尋標記
- 暫停或停止播放
- 取得讀取器效能統計資料
- 使用手動資料流程選取
- 使用非同步讀取器傳遞壓縮的範例
相關主題