将媒体源与媒体会话配合使用
如果使用媒体会话来控制播放,则应对媒体源调用的方法集受到限制。 本部分介绍如何将媒体源与媒体会话结合使用。
下面是应用程序将执行的基本步骤:
创建媒体源。 若要创建媒体源,请使用源解析程序。 有关详细信息,请参阅 源解析程序。 源解析程序返回指向源的 IMFMediaSource 接口的指针。 (如果已编写自定义媒体源,可以改为提供自定义创建方法。)
配置演示文稿。 若要配置源的演示文稿,请调用 IMFMediaSource::CreatePresentationDescriptor。 可以修改此副本,但在播放开始之前,更改不会变为活动状态。 请勿在播放期间修改演示文稿描述符。 有关详细信息,请参阅 演示文稿描述符。
创建包含媒体源的拓扑。 有关详细信息,请参阅 拓扑。
使用媒体会话控制播放。 媒体会话调用媒体源上的方法。 应用程序目前不应在媒体源上调用任何方法。
在发布媒体源之前,请调用 IMFMediaSource::Shutdown 以关闭源。
注意
如果使用 sequencer 源,则 sequencer 源将处理关闭段源。 有关详细信息,请参阅 Sequencer 源。
如果使用媒体会话,则应在媒体源上调用的唯一方法是 CreatePresentationDescriptor、 GetCharacteristics 和 Shutdown。 具体而言:
请勿调用任何 IMFMediaStream 方法。
请勿直接从媒体源或任何流中检索事件。 媒体会话必须接收这些事件,管道才能正常运行。 媒体会话转发应用程序所需的任何事件。
相关主题