Windows Media Audio 和 Windows Media Video 编码器支持各种编码模式。 这些模式通常通过在编码器 Media Foundation 转换 (MFT)上设置属性来配置。 若要执行文件编码,无论是使用 WMContainer 级组件还是构建部分拓扑,都必须根据流的编码模式和媒体类型设置属性来适当配置编码器。 必须在编码器和对象(ASF 文件接收器或 ASF 多路复用器)上设置相同的属性集,才能编写 ASF 文件。
编码器属性在 wmcodecdsp.h 中定义。 用于配置编码器的特定属性是使用 IPropertyStore 接口的方法设置的。
音频流属性
下表显示了音频流的编码器配置。
编码类型 | 属性名称 - 值 |
---|---|
常量比特率编码 | MFPKEY_VBRENABLED - FALSE (可选)默认情况下,MFPKEY_VBRENABLED设置为 FALSE。 |
Quality-Based 可变比特率编码 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 1(可选) 默认情况下,MFPKEY_PASSESUSED设置为 1。 MFPKEY_DESIRED_VBRQUALITY - 从 0 到 100 |
不受约束的可变比特率编码 | MFPKEY_VBRENABLED - 启用 MFPKEY_PASSESUSED - 2 |
Peak-Constrained 可变比特率编码 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 MFPKEY_RMAX - 最大比特率 MFPKEY_BMAX - 最大缓冲区窗口 |
视频流属性
下表显示了视频流的编码器配置。
编码类型 | 属性名称 |
---|---|
常量比特率编码 | MFPKEY_VBRENABLED - 假 (可选) 默认情况下,MFPKEY_VBRENABLED设置为 FALSE。 MFPKEY_VIDEOWINDOW - 缓冲区窗口 |
Quality-Based 可变比特率编码 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 1 (可选) 默认情况下,MFPKEY_PASSESUSED设置为 1。 MFPKEY_DESIRED_VBRQUALITY - 从 0 到 100 |
不受约束的可变比特率编码 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 |
Peak-Constrained 可变比特率编码 | MFPKEY_VBRENABLED - TRUE MFPKEY_PASSESUSED - 2 MFPKEY_RMAX - 最大比特率 MFPKEY_BMAX - 最大缓冲区窗口 |
配置编码器的属性存储库
必须在编码会话之前指定编码类型和各种特定于流的设置来配置编码器。 还必须在 ASF ContentInfo 对象的 属性存储中设置编码器属性,该属性表示输出文件的 ASF 标头对象。
如果使用编码器 MFT:
- 获取对编码器 MFT 的 IMFTransform 接口的引用,如 使用编码器的 IMFTransform 接口中所述。
- 查询编码器 MFT 以获取 IPropertyStore 接口。
- 通过调用 IPropertyStore::SetValue 设置所需的属性。
如果使用内置编码器激活对象并已创建和配置 ASF 文件接收器,可以将 ASF 媒体接收器的属性存储传递给 MFCreateWMAEncoderActivate 或 MFCreateWMVEncoderActivate。 根据应用程序指定的设置自动配置编码器。 有关详细信息,请参阅 使用编码器的激活对象中所述的过程。
有关使用激活对象创建 Media Foundation 对象的详细信息,请参阅 激活对象。
相关主题