使用非平方像素写入流
[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
可通过两种方法创建具有非方形像素的视频流,这些视频流将在 Windows 媒体播放器 中正确显示。 第一种方法涉及在文件标头中设置流级属性。 第二种方法包括将数据单元扩展添加到配置文件中的流,然后在写入的每个示例中为其设置值。
使用流级别标头属性设置像素纵横比
- 设置编写器对象。 有关详细信息,请参阅 编写 ASF 文件。
- 创建或加载包含一个或多个视频流的配置文件。 有关详细信息,请参阅 将配置文件与编写器配合使用。
- 调用 IWMWriter::SetProfile。 (在设置任何标头属性之前始终调用此方法。)
- 调用 QueryInterface 以获取 IWMHeaderInfo3 接口,并调用 AddAttribute 两次,将 AspectRatioX 和 AspectRatioY 添加为视频流的流级属性。 这些属性是 DWORD 值。
- 写入文件。
使用数据单位扩展设置像素纵横比
在编写之前:
- 设置编写器对象。 有关详细信息,请参阅 编写 ASF 文件。
- 创建或加载包含一个或多个视频流的配置文件。 有关详细信息,请参阅 将配置文件与编写器配合使用。
- 对于配置文件中任何媒体类型) 的每个流 (,请调用 IWMStreamConfig::SetStreamName 以指定所选的唯一名称。 不要为两个流指定相同的名称。
- 在视频流上使用 IWMStreamConfig2::AddDataUnitExtension 添加像素纵横比的数据单元扩展。
- 调用 IWMWriter::SetProfile。
- 写入文件。
编写时:
- 对于每个示例,调用 INSSBuffer3::SetProperty 并指定 WM_SampleExtensionGUID_PixelAspectRatio 属性以及正确的值。 纵横比值编写为两个串联的两位数值。 例如,16:9 编写为 1609 或 0x0649。 这始终是一个 2 字节值。
相关主题