将本机流格式插入 ASF 文件中 (QASF)

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

默认情况下, WM ASF 编写器 在其输入引脚上需要未压缩的音频和视频流,并使用 Windows Media 格式 SDK 访问 Windows Media Audio 和 Windows Media Video 编解码器,这些编解码器会压缩流。 但 ASF 文件容器可用于任何类型的数据。 通过将数字媒体数据放入 ASF 文件容器中,可以添加 ASF 提供的功能,例如元数据和数字版权管理 (DRM) ,而无需对内容进行转码。

若要创建包含非基于 Windows Media 的内容的 ASF 文件,应用程序必须压缩 WM ASF 编写器的筛选器图上游中的流,并通过调用 IConfigAsfWriter2::SetParam 绕过 WM ASF 编写器的压缩机制,如下所示:

pConfigAsfWriter2->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS,TRUE,0)

然后,使用所需的配置文件配置筛选器。 输入流的媒体类型必须与配置文件中的格式完全匹配。 在某些情况下,可能需要检查输入流的格式,并创建自定义配置文件来匹配该格式。 有关详细信息,请参阅 使用第三方编解码器创建 ASF 文件

将 WM ASF 编写器连接到上游筛选器时,请使用 IGraphBuilder::ConnectDirect 方法。 请勿使用任何“智能连接”方法(如 IGraphBuilder::ConnectIGraphBuilder::RenderFile )来连接筛选器,因为这会禁用筛选器的“绕过压缩”模式。