如何控制演示状态

媒体会话提供传输控件,例如在播放列表样式) 播放方案中更改演示状态 (播放、暂停和停止。 本主题介绍应用程序为更改播放状态而应调用的媒体会话方法。

下表显示了有效的表示状态转换。

状态转换 说明
播放 -> 暂停 演示文稿时钟冻结。
播放 -> 停止 演示时钟已重置。
暂停 -> 播放 演示文稿时钟从在“播放”到“暂停”切换期间冻结的时间恢复。
暂停 -> 停止 演示时钟已重置。
停止 -> 播放 演示文稿时钟从演示文稿的开头开始。
停止 -> 暂停 不允许。

 

更改演示状态

  • 调用 IMFMediaSession::P ause 方法来暂停播放。

    hr = pMediaSession->Pause();
    

    在调用此方法之前,应用程序必须调用 IMFMediaSession::GetSessionCapabilities 方法,以发现媒体源是否支持暂停状态。 如果返回,此方法在 pdwCaps 参数中返回MFSESSIONCAP_PAUSE

    暂停会暂时停止当前演示文稿的媒体会话、演示时钟和流接收器。 调用成功完成后,应用程序会收到 MESessionPaused 事件。

  • 调用 IMFMediaSession::Stop 方法来停止播放。

    hr = pMediaSession->Stop();
    

    此方法通过停止媒体源、相应的时钟和流接收器来停止媒体会话。 如果媒体会话正在控制 Sequencer 源,则排序程序源会停止基础本机源。 媒体会话停止后,应用程序会收到 MESessionStopped 事件。

  • 调用 IMFMediaSession::Start 方法来开始播放或查找新位置。

    hr = pMediaSession->Start(NULL, &var);
    

    此方法从“暂停”和“停止”状态启动媒体会话。 媒体会话负责在管道中设置数据流。 此方法指示媒体会话启动演示时钟。 在此调用后,媒体会话会将 MESessionStarted 事件发送到应用程序。

媒体会话