關於媒體會話

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

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

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

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

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

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

受保護內容

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

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

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

簡報時鐘

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

  • 建立簡報時鐘。

  • 選取時間來源。

  • 通知媒體接收有關時鐘的資訊

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

  • 關閉時鐘。

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

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

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

媒體會話