ASF 媒体接收器

ASF 媒体接收器是编码管道中允许应用程序写入 ASF 文件的最后一个组件。

Media Foundation 提供两种类型的 ASF 媒体接收器:

  • ASF 文件接收器 用于将 ASF 媒体数据存档到文件。
  • ASF 流式处理接收器 用于在可以跨网络流式传输的字节流中写入 ASF 内容。

ASF 媒体接收器包含一个或多个流接收器,这些接收器表示要为输出 ASF 文件中每个流写入的数据。 对于在 Windows Vista 上运行的编码应用程序,必须手动配置编码拓扑,方法是创建并配置 ASF 媒体接收器,然后将其添加到拓扑。 在 Windows 7 中,如果使用快速转码对象来创建拓扑,则你没有直接创建媒体接收器,并且应用程序不会在媒体接收器或任何流接收器上调用任何方法。 快速转码对象实例化所需的媒体接收器,并将其添加到拓扑,然后再返回对调用方应用程序的引用。 但是,对于快速转码对象,存在一些限制,具体取决于编码的类型。

ASF 媒体接收器对象模型

ASF 媒体接收器实现 IMFMediaSink 接口并公开以下接口。 应用程序可以通过在用于生成输出样本的 ASF 媒体接收器上调用 QueryInterface 来获取对这些接口的引用。

接口 说明
IMFMediaSink 对于所有媒体接收器是必需的。
IMFFinalizableMediaSink 由 ASF 文件接收器实现,该接收器将生成的媒体内容写入文件。 可以使用此接口上的 方法来刷新数据并更新最终输出文件的 ASF 标头对象。
IMFClockStateSink 从演示文稿时钟接收状态更改通知。
IMFASFContentInfo ASF ContentInfo 对象是主要存储 ASF 标头对象信息的 WMContainer 级别对象。 这用于创建 ASF 媒体接收器。
IMFMetadata 用于描述 ASF 文件的元数据。
IMFMetadataProvider 检索整个演示文稿或演示文稿中的一个流的元数据集合。

 

ASF 文件接收器

ASF 文件接收器是媒体基础提供的 IMFMediaSink 的实现,应用程序可以使用该实现将 ASF 媒体数据存档到文件中。

如果使用管道层对象写入新的 ASF 文件,则需要在文件接收器或其任何流接收器上创建、配置和调用方法。 配置文件接收器后,可以将其添加到编码管道。

下面是使用 ASF 文件接收器的常规步骤:

  1. 创建进程内或进程外的文件接收器。
  2. 使用所有流、编码属性和元数据信息配置文件接收器。
  3. 通过枚举流接收器或跟踪接收器中的流编号,将文件接收器与输出拓扑节点相关联。

以下主题包含有关使用 ASF 文件接收器的详细信息:

管道层 ASF 组件

媒体基础中的 ASF 支持