IDvdGraphBuilder::RenderDvdVideoVolume 方法 (strmif.h)

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

方法 RenderDvdVideoVolume 根据用于播放 DVD-Video 卷的用户规范完成筛选器图的生成。

语法

HRESULT RenderDvdVideoVolume(
  [in]  LPCWSTR             lpcwszPathName,
  [in]  DWORD               dwFlags,
  [out] AM_DVD_RENDERSTATUS *pStatus
);

参数

[in] lpcwszPathName

指向要播放的 DVD-Video 卷的路径的指针。 可以为 NULL

[in] dwFlags

AM_DVD_GRAPH_FLAGS枚举中的标志的按位 OR,指定如何生成 DVD 播放图。

[out] pStatus

指向 AM_DVD_RENDERSTATUS 结构的指针。 当 方法返回时,结构指示任何呈现失败。

返回值

返回一个 HRESULT 值,该值取决于接口的实现。 DirectShow 实现返回值包括:

返回代码 说明
E_INVALIDARG
dwFlags 参数指定冲突的选项。
S_FALSE
方法部分成功。 若要找出发生了哪些错误,请检查 pStatus 参数。
S_OK
方法成功,并且已呈现所有流。
VFW_E_DVD_DECNOTENOUGH
无法呈现一个或多个流。

如果在 dwFlags 参数中指定了 AM_DVD_HWDEC_ONLY 或 AM_DVD_SWDEC_ONLY 标志,请尝试使用 AM_DVD_HWDEC_PREFER 或 AM_DVD_SWDEC_PREFER 标志再次调用 方法。

VFW_E_DVD_NON_EVR_RENDERER_IN_FILTER_GRAPH
筛选器图已包含视频呈现器。 如果在 dwFlags 参数中指定AM_DVD_EVR_ONLY标志,但图形中已包含增强视频呈现器 (VMR) 筛选器以外的视频呈现器,则方法将返回此错误代码。
VFW_E_DVD_RENDERFAIL
生成图形时出错。 例如,DVD Graph 生成器无法创建所需的筛选器或无法呈现任何流。
VFW_E_DVD_TOO_MANY_RENDERERS_IN_FILTER_GRAPH
筛选器图包含多个视频呈现器。

注解

AM_DVD_RENDERSTATUS结构反映此方法的失败代码。 此方法返回S_FALSE的原因包括:

  • 图形已完全生成,但以下情况之一是正确的。
    • 覆盖混合不起作用 - 应用程序未设置AM_DVD_NOVPE标志,并且无法通过覆盖混音器放置视频流。 在这种情况下,如果在软件中解码视频,应用程序将具有足够的信息来通知用户视频将不可见。 硬件解码的视频仅在连接到硬件视频解码器的 NTSC 输出端口的电视上可见。
    • 视频解码器不生成第 21 行数据。 应用程序可以显示一条警告或信息性消息,指出隐藏式字幕由于解码器而不可用。
    • 未指定卷路径,并且 DVD 导航器未找到要播放的任何 DVD-Video 卷。 如果播放开始时驱动器中没有任何可用,应用程序可以要求用户插入 DVD-Video 光盘。
  • 某些流未呈现。 应用程序可以向用户指示某些流无法播放。
此方法在不了解要播放的 DVD-Video 文件或卷的情况下生成图形。 即使 lpcwszPathNameNULL 或 DVD 导航器筛选器找不到要播放的默认 DVD-Video 卷,DVD-Video 图形生成器也会生成图形。

要求

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

另请参阅

DVD 应用程序

错误和成功代码

IDvdGraphBuilder 接口