在播放时获取配置文件信息

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

用于创建文件的配置文件中的信息存储在文件的标头部分中。 这两个读取器对象都可以从文件头访问配置文件信息。 出于多种原因,你可能想要从读取器访问配置文件数据。 最常见的情况是,需要检索有关流、互斥对象和带宽共享对象的信息。

异步读取器对象和同步读取器对象都可以查询 IWMProfile 接口。 对配置文件信息所做的任何更改都不会影响读取器中的文件。 有关访问配置文件信息的详细信息,请参阅 使用配置文件

流信息

有时,了解流的配置方式非常重要。 从任一读取器对象检索媒体属性时,将获取输出的属性。 输出属性描述读取器如何传送流中的未压缩数据,而不是如何在 ASF 文件中配置流。

从任一读取器对象接收未压缩的流样本时,必须使用配置文件信息来标识压缩数据的格式。 如果要将压缩的流写入另一个 ASF 文件,这一点尤其重要。

使用智能重压将音频流转码为较低比特率时,还需要访问流信息。

你可能想要确定流是否使用可变比特率 (VBR) 编码写入的。 不能从任一读取器对象的 IWMProfile 接口访问任何 VBR 信息。 这是因为 VBR 信息在编码后不会存储在文件中。 可以通过获取指向读取器对象的 IWMHeaderInfo 接口的指针并调用 IWMHeaderInfo::GetAttributeByName 来确定流是否是使用 VBR 编码创建的。 必须指定流号,并将g_wszIsVBR作为属性名称传递。

互斥信息

如果要创建使用互斥的读取应用程序,则需要访问配置文件中包含的任何互斥对象的相关信息。 对于除比特率以外的所有互斥类型,读取应用程序负责所需的任何流切换。 若要切换流,需要知道哪些流是哪些流。

带宽共享信息

配置文件中包含的带宽共享对象仅供参考。 由于带宽共享数据,编写器对象和读取器对象均不执行任何操作。 如果要在读取应用程序中使用带宽共享,则必须从配置文件数据访问带宽共享信息。

注意

并非用于创建文件的配置文件中的所有信息都存在于文件头中。 一般情况下,仅在编码时使用的数据不会保留在文件中。 这包括使用 IWMWriterAdvanced2::SetInputSetting 方法设置的输入设置,以及使用 IWMPropertyVault::SetProperty 方法设置的属性。

 

IWMProfile 接口

读取 ASF 文件