共用方式為


關於媒體會話

媒體會話會公開 IMFMediaSession 介面。 根據您的應用程式是否支援受保護的內容,有兩種方式可以建立媒體會話:

  • 如果您的應用程式不支援受保護的內容,您可以呼叫 MFCreateMediaSession來建立媒體會話。 此函式會在應用程式程式內建立媒體會話。
  • 若要支援受保護的內容,請呼叫 MFCreatePMPMediaSession來建立媒體會話。 此函式會在受保護的媒體路徑 (PMP) 程式中建立媒體會話。 應用程式會接收 Proxy 物件的指標,該物件會跨進程界限封送處理方法呼叫。 請注意,PMP 媒體會話可用來播放清楚的內容,以及受保護的內容。

任何使用媒體會話的應用程式都會遵循下列一般步驟:

  1. 建立拓撲。
  2. 呼叫IMFMediaSession::SetTopology ,將媒體會話上的拓撲排入佇列。
  3. 呼叫 IMFMediaSession::Start IMFMediaSession::P auseIMFMediaSession::Stop來控制數據流。
  4. 在應用程式結束之前,請呼叫 IMFMediaSession::Close 關閉媒體會話。
  5. 呼叫 IMFMediaSource::Shutdown關閉應用程式所建立的任何媒體來源。
  6. 呼叫 IMFMediaSession::Shutdown關閉媒體會話。

使用媒體會話時,應用程式不應該直接啟動、暫停或停止媒體來源。 所有狀態變更都必須藉由呼叫IMFMediaSession 方法來起始。 媒體來源的狀態變更由媒體會話負責處理。

許多其他詳細數據將取決於應用程式的特定功能。

受保護的內容

若要播放受保護的內容,您必須呼叫 MFCreatePMPMediaSession,在受保護的媒體路徑中建立媒體會話。 此函式會在 PMP 內建立媒體會話的實例,並傳回 Proxy 物件的指標,以跨進程界限封送處理介面。

在大部分方面,在 PMP 內使用媒體會話對應用程式而言是透明的。 不過,應用程式可能需要叫用特定動作,讓用戶能夠播放內容。 例如,使用者可能需要取得DRM授權。 媒體基礎架構使用 IMFContentEnabler 介面來定義這些動作的泛型機制。

如需詳細資訊,請參閱下列主題:

簡報時鐘

媒體會話會管理簡報時鐘的所有層面:

  • 建立簡報時鐘。

  • 選取時間來源。

  • 通知媒體接收器關於時間信息的相關事宜

  • 視需要啟動、停止和暫停時鐘。

  • 關閉時鐘。

若要取得簡報時鐘的指標,請在媒體會話上呼叫 IMFMediaSession::GetClock。 在媒體會話傳送 具有 MF_TOPOSTATUS_READY 旗標的 MESessionTopologyStatus 事件之前,顯示時鐘不會傳回有效的時間。 在此之前,GetClock 會傳回MF_E_CLOCK_NO_TIME_SOURCE。

使用媒體會話的應用程式不應該啟動、停止或暫停簡報時鐘;變更時鐘速率;或關閉時鐘。

當應用程式呼叫 IMFMediaSession::Start時,媒體會話會啟動簡報時鐘,開始時間等於 Start 方法中指定的開始位置。 如需媒體工作階段的詳細資訊,請參閱 媒體工作階段

媒體會話