将媒体源与媒体会话配合使用

如果使用媒体会话来控制播放,则应对媒体源调用的方法集受到限制。 本部分介绍如何将媒体源与媒体会话结合使用。

下面是应用程序将执行的基本步骤:

  1. 创建媒体源。 若要创建媒体源,请使用源解析程序。 有关详细信息,请参阅 源解析程序。 源解析程序返回指向源的 IMFMediaSource 接口的指针。 (如果已编写自定义媒体源,可以改为提供自定义创建方法。)

  2. 配置演示文稿。 若要配置源的演示文稿,请调用 IMFMediaSource::CreatePresentationDescriptor。 可以修改此副本,但在播放开始之前,更改不会变为活动状态。 请勿在播放期间修改演示文稿描述符。 有关详细信息,请参阅 演示文稿描述符

  3. 创建包含媒体源的拓扑。 有关详细信息,请参阅 拓扑

  4. 使用媒体会话控制播放。 媒体会话调用媒体源上的方法。 应用程序目前不应在媒体源上调用任何方法。

  5. 在发布媒体源之前,请调用 IMFMediaSource::Shutdown 以关闭源。

    注意

    如果使用 sequencer 源,则 sequencer 源将处理关闭段源。 有关详细信息,请参阅 Sequencer 源

     

如果使用媒体会话,则应在媒体源上调用的唯一方法是 CreatePresentationDescriptorGetCharacteristicsShutdown。 具体而言:

  • 不要调用“开始”、“暂停”“停止”;这些方法只能由媒体会话调用。

  • 请勿调用任何 IMFMediaStream 方法。

  • 请勿直接从媒体源或任何流中检索事件。 媒体会话必须接收这些事件,管道才能正常运行。 媒体会话转发应用程序所需的任何事件。

媒体会话