配置文件

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

配置文件是描述 ASF 文件配置的数据的集合。 配置文件至少必须包含单个流的配置设置。

配置文件中的流信息包含流的比特率、缓冲区窗口和媒体属性。 音频和视频的流信息准确描述了如何在文件中配置媒体,包括 (将使用任何) 压缩数据的编解码器。

配置文件还包含有关将在随其创建的文件中使用的各种 ASF 文件功能的信息。 其中包括相互排除流优先顺序带宽共享和数据单元扩展

以前版本的 Windows Media Format SDK 提供了预配置的系统配置文件,这些配置文件可用于创建常见类型的文件,或稍作更改以满足应用程序的需求。 Windows Media 9 系列编解码器不支持系统配置文件。 这是因为随着新功能的添加,“常见”类型的文件的数量呈指数级增长。 预计几乎每个内容创建者的需求都超出了系统配置文件提供的简单解决方案。 你仍然可以使用旧的系统配置文件作为起点。 有关详细信息,请参阅 使用系统配置文件

必须为编写器提供写入的每个文件的配置文件。 可以通过调用 IWMWriter::SetProfile 来指定要与编写器一起使用的配置文件。

配置文件数据以多种不同形式存在,可供 Windows Media 格式 SDK 使用。 还可以通过多种方式访问配置文件信息。 这可能会导致对什么是配置文件及其使用方式产生混淆。

下图显示了如何在 SDK 中使用配置文件数据。

显示配置文件信息流的示意图。

配置文件数据采用三种不同形式:应用程序中配置文件对象中包含的数据、磁盘上的 XML 文件以及 ASF 文件的 标头中的数据。 这些形式的每一种数据在关系图中都显示为一个带阴影的矩形。

配置文件对象中的数据

编辑配置文件时,将使用配置文件对象,该对象封装所有配置文件数据。 可以使用配置文件管理器对象创建空的配置文件对象。 还可以使用配置文件管理器对象将现有配置文件数据加载到配置文件对象中。

大多数配置文件数据都必须通过使用表示配置文件的各个部分的对象来添加和操作。 其中包括流配置对象、互斥对象、带宽共享对象和流优先顺序对象。 可以使用配置文件对象中的方法创建其中的每一种对象类型。 更改这些对象不会影响配置文件对象,直到使用配置文件对象中的方法包含来自另一个对象的更新数据。

XML 文件中的数据

配置文件数据存储在磁盘上,格式为 XML 文件,文件扩展名为 .prx。 Windows Media Format SDK 包含一组称为系统配置文件的配置文件,这些配置文件涵盖了最常见的 ASF 文件类型。 系统配置文件存储在名为 WMSysPr9.prx 的文件中。 (请注意,此文件实际上不包含 Windows Media 9 系列的系统配置文件,因为不再使用系统配置文件的概念。) 保存自己的自定义配置文件时,必须将它们保存到自己的文件中。

可以使用配置文件管理器对象将数据从配置文件对象保存到 XML 文本字符串。 然后,可以使用所需的任何文件 I/O 函数将字符串保存到磁盘上的文件中。

ASF 文件的标头中的数据

编写器从配置文件中获取信息,并使用它来创建进入 ASF 文件的数据部分的流。 写入文件时,大部分配置文件数据存储在文件的 标头部分。 在播放时,读取器对象 (或同步读取器对象) 可以访问文件标头中的信息。 在这种情况下,读取对象创建配置文件对象,并使用 标头中的数据填充该对象。

使用读取器 (或同步读取器) 访问配置文件数据时,可以对配置文件信息进行更改,但无法将这些更改应用于读取器中的文件。 可以将读取器中的文件中的配置文件信息应用于编写器中的配置文件,以使用与读取器中的文件相同的设置创建新文件。 在这种情况下,在编写器中设置配置文件之前对配置文件信息所做的任何更改都将反映在编写器注册的配置文件信息中。

使用配置文件编辑器

可以使用配置文件编辑器(Windows Media 编码器随附的实用工具),而不是使用 Windows Media 格式 SDK 创建配置文件。 在编码应用程序中,使用 IWMProfileManager::LoadProfileByData 方法加载保存的配置文件。 在某些情况下,例如,如果使用有限数量的从未动态修改的配置文件,则使用配置文件编辑器创建配置文件可能更方便。

但是,如果使用配置文件编辑器,建议不要使用“视频大小:与视频输入相同”设置。 选中此检查框时,配置文件编辑器将创建视频输出高度和宽度设置为零的配置文件。 当 Windows Media 编码器遇到这些配置文件时,它会设置正确的值以匹配其视频输入。 但是,Windows Media Format SDK 中的编写器不会自动执行此操作,因此必须确保应用程序在配置文件没有视频帧大小的情况下设置视频帧大小。

注意 某些流配置项目不存储在配置文件中。 配置文件中的数据描述已完成的 ASF 文件的格式。 写入器对象用于配置编解码器的输入媒体属性和其他配置数据不会保存在配置文件中。 这包括使用 IWMPropertyVault::SetProperty 方法设置的所有属性。

带宽共享对象

概念

IWMProfile 接口

IWMProfileManager 接口

互斥对象

配置文件管理器对象

流配置对象

流优先顺序对象

使用配置文件