ICaptureGraphBuilder2::SetOutputFileName 方法 (strmif.h)

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia 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 值。 可能的值包括以下值。

返回代码 说明
S_OK
成功。
E_FAIL
失败。
E_POINTER
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

另请参阅

错误和成功代码

ICaptureGraphBuilder2 接口