ICaptureGraphBuilder2::SetOutputFileName 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 SetOutputFileName
创建筛选器图的文件写入部分。
语法
HRESULT SetOutputFileName(
[in] const GUID *pType,
[in] LPCOLESTR lpstrFile,
[out] IBaseFilter **ppf,
[out] IFileSinkFilter **ppSink
);
参数
[in] pType
指向 GUID 的指针,该 GUID 表示输出的媒体子类型或类标识符 (CLSID) 多路复用器筛选器或文件编写器筛选器。 如果指定媒体子类型,它必须是下列类型之一:
值 | 说明 |
---|---|
MEDIASUBTYPE_Avi | 音频视频交错 (AVI) |
MEDIASUBTYPE_Asf | 高级流格式 (ASF) |
[in] lpstrFile
指向包含输出文件名的宽字符字符串的指针。
[out] ppf
接收多路复用器 IBaseFilter 接口的指针的地址。
[out] ppSink
接收文件编写器的 IFileSinkFilter 接口的指针的地址。 可以为 NULL。
返回值
返回 HRESULT 值。 可能的值包括以下值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
失败。 |
|
NULL 指针参数。 |
注解
此方法基于 pType 参数的值创建多路复用器筛选器。 对于 AVI,它将创建 AVI Mux 筛选器。 对于 ASF,它将创建 WM ASF 编写器。 对于其他值,它将创建由 CLSID 标识的筛选器。 它将多路复用器添加到筛选器图,并在 ppf 参数中返回指向其 IBaseFilter 接口的指针。
如果多路复用器支持 IFileSinkFilter 接口,该方法将使用 lpwstrFile 参数中给定的值调用 IFileSinkFilter::SetFileName 来设置输出文件名。 如果多路复用器不支持 IFileSinkFilter 接口,该方法会将 文件编写器筛选器 添加到筛选器图,将多路复用器连接到文件编写器,并使用文件编写器的 IFileSinkFilter 接口调用 SetFileName。 如果 pSink 参数不为 NULL,它将接收指向 IFileSinkFilter 接口的 指针。
可以使用指向 ppf 参数中返回的多路复用器筛选器的指针作为 ICaptureGraphBuilder2::RenderStream 方法中的 pSink 参数。
对于自定义多路复用器筛选器,如果筛选器在连接其输入引脚之前不支持其输出引脚上的连接,该方法将失败。 例如,SDK 附带的 WavDest 筛选器示例 具有此限制。
如果该方法成功,则 ppf 参数中返回的 IBaseFilter 接口具有未完成的引用计数。 如果方法成功且 pSink 不为 NULL,则 IFileSinkFilter 接口也具有未完成的引用计数。 使用完这两个接口后,请务必释放它们。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |