关于 Sequencer 源

Sequencer 源使应用程序能够按顺序播放 媒体源 集合,在源之间无缝转换。 排序器源可用于以下方案:

  • 创建从一个媒体源无缝切换到下一个媒体源的播放列表。
  • 同时播放来自多个源的流;例如,使用另一个文件的视频播放来自一个文件的音频。
  • 在连续播放列表条目的不同媒体源中的流之间切换;例如,播放列表可以包含共享同一视频源的条目,而每个条目包含不同的音频源。

对于播放列表的每个元素,应用程序将创建单独的拓扑。 这些拓扑中的媒体源称为 本机源,以将它们与序列器源区分开来。 在播放期间,整个拓扑序列称为 演示文稿,序列中的每个拓扑称为

播放由 媒体会话控制,该会话提供传输控件,例如播放、暂停和停止。 媒体会话还管理演示时间,并将事件发送到应用程序。 来自 sequencer 源的 (事件通过 Media Session 转发到应用程序。)

为了创建播放列表,应用程序会创建一个或多个播放拓扑,并按所需的播放顺序将它们排入排序器源。 在内部,排序器源修改拓扑,使源节点指向排序器源而不是本机源。 应用程序将这些修改后的拓扑(而不是原始拓扑)发送到媒体会话。 这使排序器源能够聚合本机源并与媒体会话通信。

为了实现段之间的无缝转换,排序器源会预滚动每个段。 在播放一个片段时,在播放以下段之前,序列器源会触发包含表示描述符 的 MENewPresentation 事件。 应用程序使用此演示文稿描述符获取演示文稿中下一段的拓扑,并将拓扑排入媒体会话的队列。

下图显示了通过 Sequencer 源的播放列表条目的数据流。 应用程序使用源解析程序创建本机源,为每个段生成拓扑,并将序列器源上的拓扑排队。

显示来自 imfmediasession、imfsequencersource 和导致 imfmediasource 的播放列表段的数据流的示意图

如何创建播放列表

拓扑

使用 Sequencer 源

Sequencer 源