使用编码器的激活对象

要将媒体文件转换为 ASF 格式,可以使用Windows编码器。 若要使用这些编码器,它们必须注册到系统。

有关编码器注册的信息,请参阅 实例化编码器 MFT

使用编码器的激活对象

除了使用编码器的"按CoCreateInstance (创建编码器") 中所述,还可以为编码器创建激活对象的实例。 激活对象有助于创建编码器媒体基础为此方法提供以下两个功能:

这两个函数都要求在调用这些函数之前创建目标媒体类型并设置编码属性。 如果应用程序使用管道层 ASF 组件将文件编码为 ASF 格式,并且已创建并配置 ASF 媒体接收器,可以从 ASF 媒体接收器获取这组信息。

MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate 将编码器的输出类型设置为应用程序指定的媒体类型。

注意 如果使用的是 MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate, 则可以通过调用 "MFActivate::ActivateObject" 来激活编码器,但不能更改编码器的输入和输出媒体类型,也不能更改任何编码属性。

有关使用激活对象创建媒体基础对象,请参阅 激活对象

从 ASF 媒体接收器获取目标媒体类型

  1. 通过调用 ASF 媒体接收器上的 "CSink::QueryInterface" 并传递 "IID""CASFContentInfo" _ 作为接口标识符,获取指向 ASF 媒体接收器的 "C1"的指向该指针的指针。
  2. 获取与 ContentInfo 对象关联的 ASF 配置文件对象。
  3. 枚举配置文件中的流,获取流的媒体类型。

从 ASF 媒体接收器获取编码属性

  1. 如果在文件接收器 ) 中设置属性中所述的媒体接收器 (中配置了编码属性,则可以通过在 ASF 媒体接收器上调用"ID _ IPropertyStore" 作为接口标识符来调用 "0:QueryInterface" 来引用接收器的属性存储。

  2. 如果具有指向接收器的 ContentInfo 对象的指针,可以调用 UFASFContentInfo::GetEncodingConfigurationPropertyStore, 获取对媒体接收器的属性存储的引用。

    确保 ASF 媒体接收器上设置的所有编码属性都反映在传递给 MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate的属性存储中。 编码器根据应用程序指定的设置自动进行配置。

在编码拓扑中创建转换节点时,可以将对象类型设置为在这两次调用中收到的 "开始 "指针。 解析拓扑后,媒体会话将使用激活对象来创建编码器 MFT 的实例。

Windows 7 及更高版本中的编码器枚举

对于在 Windows 7 上运行的应用程序,除了 MFTEnum,还可以调用 MFTEnumEx枚举编码器 MFT。 此函数返回指向编码器 MFT 的激活对象的指针。 函数的结构与上述 MFTEnum 非常相似,但 MFTEnumEx 为编码器 MFT 返回与搜索条件匹配的一组 CFTActivate 指针。

实例化编码器 MFT

Windows媒体编码器

激活对象