枚举编解码器格式

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

编解码器格式是使用编解码器中的数据填充的流配置对象。 每种编解码器格式都包含编解码器支持的媒体配置。 大多数音频编解码器支持有限数量的格式,其中每个格式都由编解码器枚举,可以使用 IWMCodecInfo 的方法进行访问。 另一方面,视频编解码器仅提供单一格式。 这是因为视频流的变量(如帧大小)比音频流的设置更灵活。 使用视频流时,必须填写某些流配置值;应仅编辑音频流配置以分配名称、连接名称和流号。 有关详细信息,请参阅 所有流的通用配置

枚举的编解码器格式取决于使用 IWMCodecInfo3::SetCodecEnumerationSetting 设置的当前编解码器枚举设置。 目前,仅支持两个编解码器属性:g_wszNumPasses,它指定编解码器将执行的编码传递数;g_wszVBREnabled指定编解码器是否将使用可变比特率编码。 任何编解码器支持的最大编码传递数为两次,因此有四种不同的配置可供检索编解码器,如下表所示。

  CBR) 流 (固定比特率 2-pass CBR 流 基于质量的可变比特率 (VBR) 流 基于比特率的 VBR 流 (受约束或不受约束的)
g_wszVBREnabled FALSE FALSE TRUE TRUE
g_wszNumPasses 1 2 1 2

 

若要枚举编解码器支持的格式,请使用 IWMCodecInfo::GetCodecFormatCount 查找支持的编解码器数。 然后,针对每种格式调用 IWMCodecInfo::GetCodecFormat 。 格式索引的范围从零到比支持的格式总数少一个。 可以通过调用 IWMCodecInfo2::GetCodecFormatDesc 来检索格式的说明。 使用 GetCodecFormatDesc 时,不需要使用 GetCodecFormat,因为流配置对象是通过这两种方法检索的。 视频编解码器格式不包含说明。 每个视频编解码器只有一种用于该类型的所有流的格式。

检索编解码器格式时,将获取包含格式设置的流配置对象的 IWMStreamConfig 接口。

从编解码器获取流配置信息