如何使用媒體基礎播放媒體檔案
本教學課程說明如何使用 媒體會話 物件播放媒體檔案。
必要條件
閱讀本主題之前,您應該先熟悉下列媒體基礎概念:
注意
本主題不會描述如何播放受數位版權管理保護的檔案, (DRM) 。 如需 Microsoft 媒體基礎中 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:關閉媒體會話
- 媒體會話播放範例
相關主題