WM ASF 编写器筛选器 (DirectShow)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
WM ASF 编写器是随 Windows Media™ Format SDK 提供的编写器对象的包装器筛选器。 筛选器接受可变数量的输入流,并创建高级系统格式 (ASF) 文件。 筛选器处理所有压缩和多路复用 (尽管压缩机制可以绕过) 。 可以在各种方案中使用 WM ASF 编写器,包括数字视频 (DV) 捕获、音频重新压缩以及Audio-Video交错 (AVI) 或 MPEG 多媒体文件的转换,以进行网络流式处理。 此筛选器提供了在 Microsoft DirectShow 中创建 Microsoft® Windows Media™ Audio 和 Windows Media Video 文件的唯一方法。
有关详细信息,请参阅 在 DirectShow 中创建 ASF 文件。
Label | 值 |
---|---|
筛选器接口 | IAMFilterMiscFlags、 IBaseFilter、 IConfigAsfWriter、 IConfigAsfWriter2、 IFileSinkFilter2、 IMediaSeeking、 IPersistStream、 IServiceProvider、 ISpecifyPropertyPages此外,筛选器公开以下 Windows 媒体格式 SDK 接口: IWMIndexer2、 IWMHeaderInfo、 IWMWriterAdvanced2 |
输入引脚媒体类型 | 取决于 ASF 配置文件。 通常为未压缩的音频和视频类型,但如果它们与 ASF 配置文件匹配,筛选器将接受压缩类型。 |
输入引脚接口 | IAMStreamConfig、 IAMWMBufferPass、 IMemInputPin、 IPin、 IServiceProvider此外,该引脚公开以下 Windows 媒体格式 SDK 接口: IWMStreamConfig2 通过 IServiceProvider () |
输出引脚媒体类型 | 不适用。 |
输出引脚接口 | 不适用。 |
筛选器 CLSID | CLSID_WMAsfWriter |
属性页 CLSID | CLSID_AsfWriterProperties |
可执行文件 | Qasf.dll |
优点 | MERIT_DO_NOT_USE |
筛选器类别 | 未指定 |
备注
筛选器需要 Windows 媒体格式软件开发工具包 (SDK) 及其基础依赖项。
筛选器上的输入引脚数,具体取决于 ASF 流的配置文件或配置文件标识符。
输入引脚支持 IAMStreamConfig 接口中的一种方法: IAMStreamConfig::GetFormat。 所有其他方法返回E_NOTIMPL。 调用 GetFormat 方法以查询引脚的目标压缩格式,该格式由当前 ASF 配置文件定义。 使用 IConfigAsfWriter 接口设置配置文件。
可以使用筛选器的 IServiceProvider 接口获取指向 IWMWriterAdvanced2 接口的指针,该接口在 Windows Media Format SDK 中定义。 可以使用 IWMWriterAdvanced2 接口来控制源视频交错时的视频反交错。 若要设置反隔行模式,请调用 IWMWriterAdvanced2::SetInputSetting。 对于 dwInputNum 参数,请使用视频输入引脚的从零开始的索引,如 IEnumPins 接口枚举的那样。
以下示例演示如何查询此接口:
// Assume that pAsfWriter is a valid IBaseFilter pointer.
IServiceProvider *pProvider = NULL;
IWMWriterAdvanced2 *pWMWA2 = NULL;
hr = pAsfWriter->QueryInterface(
IID_IServiceProvider,
(void**)&pProvider
);
if (SUCCEEDED(hr))
{
hr = pProvider->QueryService(
IID_IWMWriterAdvanced2,
IID_IWMWriterAdvanced2,
(void**)&pWMWA2
);
pProvider->Release();
if (SUCCEEDED(hr))
{
// Use pWMWA2. (Not shown.)
pWMWA2->Release();
}
}
应用程序不应使用 IWMWriterAdvanced2 接口继承的任何 IWMWriterAdvanced 方法。 调用任何这些方法都可以与筛选器的操作相交。
此筛选器支持的唯一文件写入模式是AM_FILE_OVERWRITE。 请参阅 IFileSinkFilter2::GetMode。
当 Windows Media Format SDK 运行时将WMT_STATUS消息发送到 WM ASF 编写器筛选器时,筛选器会将其转发为 EC_WMT_EVENT 事件。
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈