媒体会话事件
媒体会话的大部分操作都是异步执行的,因此应用程序必须使用媒体会话的 IMFMediaEventGenerator 接口侦听事件。 (IMFMediaSession 接口继承 IMFMediaEventGenerator.) 事件的确切顺序将取决于应用程序,但媒体会话在几乎任何情况下都会引发以下事件。
事件 | 说明 |
---|---|
MEEndOfPresentation | 当媒体源完成演示时引发。 数据目前可能仍在管道中移动。 |
MEError | 如果流式处理期间发生错误,则引发。 |
MESessionClosed | Close 方法完成时引发。 此事件是媒体会话排队的最后一个事件。 收到此事件后,可以安全地关闭创建的任何媒体源。 |
MESessionEnded | 在媒体会话完成最后一次演示文稿时引发。 |
MESessionNotifyPresentationTime | 当新演示文稿开始时,通知应用程序演示时间。 |
MESessionStarted | Start 方法完成时引发。 除非发生错误,否则此时数据将通过管道移动。 |
MESessionTopologySet | SetTopology 方法完成时引发。 除非发生错误,否则应用程序无需执行任何操作。 |
MESessionTopologyStatus | 在拓扑状态更改时在不同时间引发。 |
IMFMediaSession::Shutdown 方法不引发事件。 Shutdown 方法是同步的。 此方法返回后,可以安全地释放事件回调指针。
除了来自媒体会话的事件外,应用程序还可以从拓扑中的媒体接收器接收事件。 这些事件可以是媒体接收器定义的自定义事件,其中可能包含任意数据。 例如,接收器可能从源数据派生事件数据,该源数据可能来自不受信任的外部源。 应用程序应忽略它无法识别的任何事件,并在分析事件数据时保持谨慎。
相关主题