如何使用媒體基礎架構播放媒體檔案
本教學課程示範如何使用 媒體會話 物件播放媒體檔案。
先決條件
閱讀本主題之前,您應該先熟悉下列媒體基礎概念:
注意
本主題未說明如何播放受到數位版權管理保護的檔案(DRM)。 如需 Microsoft Media Foundation 中 DRM 的相關信息,請參閱 如何播放受保護的媒體檔案。
概述
下列物件可用來搭配媒體會話播放媒體檔案:
- 媒體來源 是剖析媒體檔案或其他媒體數據來源的物件。 媒體來源會為檔案中的每個音訊或視訊數據流建立 串流 物件。 譯碼器 將編碼的媒體數據轉換成未壓縮的視訊和音訊。
- 來源解析程式 從 URL 建立媒體來源。
- 增強式視訊轉譯器 (EVR) 會將視訊轉譯至畫面。
- 串流音頻轉譯器 (SAR) 會將音訊轉譯為喇叭或其他音訊輸出裝置。
- 拓撲 定義從媒體來源到 EVR 和 SAR 的數據流程。
- 媒體會話 控制數據流,並將狀態事件傳送至應用程式。 下圖說明此程式。
顯示使用媒體會話圖表
以下是使用媒體會話播放媒體檔案所需步驟的一般大綱:
呼叫 MFStartup 函式來初始化 Media Foundation 平臺。
呼叫 MFCreateMediaSession,以建立媒體會話的新實例。
使用來源解析程式來建立媒體來源。 如需詳細資訊,請參閱 使用來源解析程式。
建立拓撲,將媒體來源連線到 EVR 和 SAR。 在此步驟中,應用程式會建立不包含譯碼器 部分 拓撲。 如需詳細資訊,請參閱 建立播放拓撲。
呼叫 IMFMediaSession::SetTopology 以設定媒體會話上的拓撲。
使用 IMFMediaEventGenerator 介面從媒體會話取得事件。
呼叫 IMFMediaSession::Start 開始播放。 播放開始之後,您可以呼叫 IMFMediaSession::P ause來暫停它,或呼叫 IMFMediaSession::Stop來停止它。
當應用程式結束時,釋放資源:
- 呼叫 IMFMediaSession::Close 來關閉媒體會話。 這個方法是異步的。 完成時,媒體會話會傳送 MESessionClosed 事件。 然後,執行其餘步驟是安全的。
- 調用 IMFMediaSource::Shutdown 以關閉媒體來源。
- 呼叫 IMFMediaSession::Shutdown 以關閉媒體會話。
- 請呼叫函數 MFShutdown 來關閉 Media Foundation 平臺。
下列各節顯示完整的程式碼範例:
- 步驟 1:宣告 CPlayer 類別
- 步驟 2:建立 CPlayer 物件
- 步驟 3:開啟媒體檔案
- 步驟 4:建立媒體會話
- 步驟 5:處理媒體會話事件
- 步驟 6:控制播放
- 步驟 7:關閉媒體會話
- 媒體會話播放範例
相關主題