配置 文件

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

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

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

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

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

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

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

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

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

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

配置文件对象中的数据

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

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

XML 文件中的数据

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

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

ASF 文件的标头中的数据

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

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

使用配置文件编辑器

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

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

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

带宽共享对象

概念

IWMProfile 接口

IWMProfileManager 接口

互斥对象

Profile Manager 对象

流配置对象

流优先级对象

使用配置文件