如何控制簡報狀態
媒體會話提供傳輸控制項,例如在播放清單樣式播放案例中變更簡報狀態 (播放、暫停和停止) 。 本主題描述應用程式應該呼叫以變更播放狀態的媒體會話方法。
下表顯示有效的呈現狀態轉換。
狀態轉換 | 描述 |
---|---|
播放 - > 暫停 | 簡報時鐘會凍結。 |
播放 - > 停止 | 簡報時鐘已重設。 |
暫停 - > 播放 | 簡報時鐘會從播放到暫停轉換期間停止的時間繼續。 |
暫停 - > 停止 | 簡報時鐘已重設。 |
停止 - > 播放 | 簡報時鐘從簡報的開頭開始。 |
停止 - > 暫停 | 不允許。 |
變更簡報狀態
呼叫 IMFMediaSession::P ause 方法來暫停播放。
hr = pMediaSession->Pause();
呼叫此方法之前,應用程式必須呼叫 IMFMediaSession::GetSessionCapabilities 方法,才能探索媒體來源是否支援 Pause 狀態。 如果這樣做,此方法會在pdwCaps參數中傳回MFSESSIONCAP_PAUSE。
暫停會暫時停止媒體會話、簡報時鐘,以及目前簡報的資料流程接收。 呼叫成功完成之後,應用程式會收到 MESessionPaused 事件。
呼叫 IMFMediaSession::Stop 方法來停止播放。
hr = pMediaSession->Stop();
此方法會藉由停止媒體來源、對應的時鐘和資料流程接收,來停止媒體會話。 如果媒體會話控制 Sequencer 來源,則順序器來源會停止基礎原生來源。 媒體會話停止之後,應用程式會收到 MESessionStopped 事件。
呼叫 IMFMediaSession::Start 方法來開始播放或搜尋新位置。
hr = pMediaSession->Start(NULL, &var);
這個方法會從 [暫停] 和 [停止] 狀態啟動媒體會話。 媒體會話負責在管線中設定資料流程。 這個方法會指示媒體會話啟動簡報時鐘。 在此呼叫之後,媒體會話會將 MESessionStarted 事件傳送至應用程式。
相關主題