關於媒體會話
媒體會話會公開 IMFMediaSession 介面。 根據您的應用程式是否支援受保護的內容,有兩種方式可以建立媒體會話:
- 如果您的應用程式不支援受保護的內容,您可以呼叫 MFCreateMediaSession來建立媒體會話。 此函式會在應用程式程式內建立媒體會話。
- 若要支援受保護的內容,請呼叫 MFCreatePMPMediaSession來建立媒體會話。 此函式會在受保護的媒體路徑內建立媒體會話, (PMP) 程式。 應用程式會接收 Proxy 物件的指標,以封送處理跨進程界限的方法呼叫。 請注意,PMP 媒體會話可用來播放清楚的內容,以及受保護的內容。
任何使用媒體會話的應用程式都會遵循下列一般步驟:
- 建立拓撲。
- 呼叫 IMFMediaSession::SetTopology,將媒體會話上的拓撲排入佇列。
- 呼叫 IMFMediaSession::Start、 IMFMediaSession::P ause或 IMFMediaSession::Stop來控制資料流程。
- 在應用程式結束之前,請呼叫 IMFMediaSession::Close 以關閉媒體會話。
- 藉由呼叫 IMFMediaSource::Shutdown,關閉應用程式所建立的任何媒體來源。
- 呼叫 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 方法中指定的開始位置。 如需媒體會話的詳細資訊,請參閱 媒體會話。
相關主題