如何控制簡報狀態

媒體會話提供傳輸控制項,例如在播放清單樣式播放案例中變更簡報狀態 (播放、暫停和停止) 。 本主題描述應用程式應該呼叫以變更播放狀態的媒體會話方法。

下表顯示有效的呈現狀態轉換。

狀態轉換 描述
播放 - > 暫停 簡報時鐘會凍結。
播放 - > 停止 簡報時鐘已重設。
暫停 - > 播放 簡報時鐘會從播放到暫停轉換期間停止的時間繼續。
暫停 - > 停止 簡報時鐘已重設。
停止 - > 播放 簡報時鐘從簡報的開頭開始。
停止 - > 暫停 不允許。

 

變更簡報狀態

  • 呼叫 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 事件傳送至應用程式。

媒體會話