共用方式為


如何使用媒體基礎架構播放媒體檔案

本教學課程示範如何使用 媒體會話 物件播放媒體檔案。

先決條件

閱讀本主題之前,您應該先熟悉下列媒體基礎概念:

注意

本主題未說明如何播放受到數位版權管理保護的檔案(DRM)。 如需 Microsoft Media Foundation 中 DRM 的相關信息,請參閱 如何播放受保護的媒體檔案

 

概述

下列物件可用來搭配媒體會話播放媒體檔案:

  • 媒體來源 是剖析媒體檔案或其他媒體數據來源的物件。 媒體來源會為檔案中的每個音訊或視訊數據流建立 串流 物件。 譯碼器 將編碼的媒體數據轉換成未壓縮的視訊和音訊。
  • 來源解析程式 從 URL 建立媒體來源。
  • 增強式視訊轉譯器 (EVR) 會將視訊轉譯至畫面。
  • 串流音頻轉譯器 (SAR) 會將音訊轉譯為喇叭或其他音訊輸出裝置。
  • 拓撲 定義從媒體來源到 EVR 和 SAR 的數據流程。
  • 媒體會話 控制數據流,並將狀態事件傳送至應用程式。 下圖說明此程式。

顯示使用媒體會話圖表

以下是使用媒體會話播放媒體檔案所需步驟的一般大綱:

  1. 呼叫 MFStartup 函式來初始化 Media Foundation 平臺。

  2. 呼叫 MFCreateMediaSession,以建立媒體會話的新實例。

  3. 使用來源解析程式來建立媒體來源。 如需詳細資訊,請參閱 使用來源解析程式

  4. 建立拓撲,將媒體來源連線到 EVR 和 SAR。 在此步驟中,應用程式會建立不包含譯碼器 部分 拓撲。 如需詳細資訊,請參閱 建立播放拓撲

  5. 呼叫 IMFMediaSession::SetTopology 以設定媒體會話上的拓撲。

  6. 使用 IMFMediaEventGenerator 介面從媒體會話取得事件。

  7. 呼叫 IMFMediaSession::Start 開始播放。 播放開始之後,您可以呼叫 IMFMediaSession::P ause來暫停它,或呼叫 IMFMediaSession::Stop來停止它。

  8. 當應用程式結束時,釋放資源:

    1. 呼叫 IMFMediaSession::Close 來關閉媒體會話。 這個方法是異步的。 完成時,媒體會話會傳送 MESessionClosed 事件。 然後,執行其餘步驟是安全的。
    2. 調用 IMFMediaSource::Shutdown 以關閉媒體來源。
    3. 呼叫 IMFMediaSession::Shutdown 以關閉媒體會話。
    4. 請呼叫函數 MFShutdown 來關閉 Media Foundation 平臺。

下列各節顯示完整的程式碼範例:

媒體會話

音訊/視訊播放