Share via


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

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

必要條件

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

注意

本主題不會描述如何播放受數位版權管理保護的檔案, (DRM) 。 如需 Microsoft 媒體基礎中 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 平臺。

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

媒體會話

音訊/視訊播放