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