如何控制演示状态
媒体会话提供传输控件,例如在播放列表样式) 播放方案中更改演示状态 (播放、暂停和停止。 本主题介绍应用程序为更改播放状态而应调用的媒体会话方法。
下表显示了有效的表示状态转换。
状态转换 | 说明 |
---|---|
播放 -> 暂停 | 演示文稿时钟冻结。 |
播放 -> 停止 | 演示时钟已重置。 |
暂停 -> 播放 | 演示文稿时钟从在“播放”到“暂停”切换期间冻结的时间恢复。 |
暂停 -> 停止 | 演示时钟已重置。 |
停止 -> 播放 | 演示文稿时钟从演示文稿的开头开始。 |
停止 -> 暂停 | 不允许。 |
更改演示状态
调用 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 事件发送到应用程序。
相关主题