IGraphBuilder::RenderFile 方法 (strmif.h)

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 RenderFile 生成一个呈现指定文件的筛选器图。

语法

HRESULT RenderFile(
  [in] LPCWSTR lpcwstrFile,
  [in] LPCWSTR lpcwstrPlayList
);

参数

[in] lpcwstrFile

指定包含媒体文件名称的宽字符字符串。

[in] lpcwstrPlayList

保留。 必须为 NULL

返回值

返回 HRESULT。 可能的值包括以下值。

返回代码 说明
S_OK
成功。
VFW_S_AUDIO_NOT_RENDERED
部分成功;未呈现音频。
VFW_S_DUPLICATE_NAME
成功;Filter Graph 管理器修改了筛选器名称以避免重复。
VFW_S_PARTIAL_RENDER
此电影中的某些流采用不受支持的格式。
VFW_S_VIDEO_NOT_RENDERED
部分成功;此电影中的一些流采用不受支持的格式。
E_ABORT
操作已中止。
E_FAIL
失败。
E_INVALIDARG
参数无效。
E_OUTOFMEMORY
内存不足。
E_POINTER
NULL 指针参数。
VFW_E_CANNOT_CONNECT
找不到中间筛选器的组合来建立连接。
VFW_E_CANNOT_LOAD_SOURCE_FILTER
无法加载此文件的源筛选器。
VFW_E_CANNOT_RENDER
找不到用于呈现流的筛选器组合。
VFW_E_INVALID_FILE_FORMAT
文件格式无效。
VFW_E_NOT_FOUND
找不到对象或名称。
VFW_E_UNKNOWN_FILE_TYPE
无法识别此文件的媒体类型。
VFW_E_UNSUPPORTED_STREAM
无法播放文件:不支持格式。

注解

如果 lpwstrFile 参数指定媒体文件,则 方法将生成用于默认播放的筛选器图。 首先,它使用 与 IGraphBuilder::AddSourceFilter 方法相同的进程添加可以读取文件的源筛选器。 然后,它会在源筛选器上呈现输出引脚,并在必要时添加中间筛选器。 它按 与 IGraphBuilder::Connect 方法相同的顺序尝试筛选器。

在连接过程中,如果引脚名称以平铺 (~) 开头,则 Filter Graph 管理器将忽略中间筛选器上的引脚。 有关详细信息,请参阅 PIN_INFO

请注意, RenderFile 方法不会从图中删除任何筛选器。 如果调用 RenderFile 两次,则第二次调用只会向图形添加更多筛选器。 运行图形时,两个源将同时播放。

示例

以下示例呈现一个 AVI 文件以供默认播放:

C++
hr = pGraph->RenderFile(L"C:\\Media\\Example.avi", 0);
以下示例使用 文件源 (URL) 筛选器通过 HTTP 下载 AVI 文件:
C++
hr = pGraph->RenderFile(L"http://example.microsoft.com/Example.avi", 0);

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IGraphBuilder 接口