WM ASF 编写器筛选器 (Windows Media Format 11 SDK)
[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
WM ASF 编写器筛选器接受可变数量的输入流,并创建 ASF 文件。 筛选器处理所有压缩和多路复用 (尽管可以在) 绕过压缩机制。 可以在各种方案中使用 WM ASF 编写器筛选器,包括数字视频 (DV) 捕获、音频重压以及Audio-Video交错 (AVI) 或 MPEG 数字媒体文件的转换,以便进行网络流式处理。 此筛选器提供了在 DirectShow 中创建 Microsoft Windows Media 音频和 Windows Media 视频文件的唯一方法。
有关详细信息,请参阅 在 DirectShow 中创建 ASF 文件。
下表包含有关 WM ASF 编写器筛选器的信息,例如它支持的接口和媒体类型。
筛选器信息 | 类型 |
---|---|
筛选器接口 | IAMFilterMiscFlags、 IBaseFilter、 IConfigAsfWriter、 IFileSinkFilter2、IMediaSeeking、IPersistStream、IServiceProvider、ISpecifyPropertyPages、 IWMIndexer2、 IWMHeaderInfo、 IWMWriterAdvanced2 |
输入引脚媒体类型 | 取决于配置文件。 通常为未压缩类型(如 MEDIATYPE_Audio 或 MEDIATYPE_Video),但如果压缩类型与配置文件匹配,则可以接受这些类型 |
输入引脚接口 | IPin、 IMemInputPin、 IAMStreamConfig、 IServiceProvider、 IAMWMBufferPass、 IWMStreamConfig2 (通过 IServiceProvider) |
输出引脚媒体类型 | 不适用 |
输出引脚接口 | 不适用 |
筛选器 CLSID | CLSID_WMAsfWriter |
属性页 CLSID | CLSID_WMAsfWriterProperties |
可执行文件 | Qasf.dll |
优点 | MERIT_DO_NOT_USE |
筛选器类别 | 未指定 |
备注
筛选器上的输入引脚数取决于传递给筛选器的配置文件。 为配置文件中定义的每个流创建一个相应媒体类型的引脚。
输入引脚支持 IAMStreamConfig 接口中的一种方法: IAMStreamConfig::GetFormat。 所有其他方法返回E_NOTIMPL。 调用 GetFormat 方法以查询引脚的目标压缩格式,该格式由当前配置文件定义。 使用 IConfigAsfWriter 接口设置配置文件。
筛选器的 IServiceProvider 接口使应用程序能够检索 Windows Media Format SDK 中定义的 IWMWriterAdvanced2 接口。 IWMWriterAdvanced2 接口控制视频去交错,如果输入是交错源(如 DV (数字视频) ),则非常有用。 使用 GetInputSetting 和 SetInputSetting 方法来控制反交错。 不建议客户端在此接口上使用任何其他方法。 只有在将筛选器添加到筛选器图后,才能获取此接口。 以下示例演示如何查询此接口:
// Assume that m_pGraph is a valid IGraphBuilder interface pointer,
// and that pAsfWriter points to the IBaseFilter interface
// on the WM ASF Writer filter.
IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;
hr = m_pGraph->AddFilter(pAsfWriter, L"WM ASF Writer");
...
hr = pAsfWriter->QueryInterface(IID_IServiceProvider, (void**)&pProvider)
if (SUCCEEDED(hr))
{
hr = pProvider->QueryService(IID_IWMWriterAdvanced2,
IID_IWMWriterAdvanced2, (void**)&pWMWA2);
pProvider->Release();
}
相关主题