DirectShow Graph Builder无法将视频文件源连接到VMR9[英] DirectShow Graph Builder fails to connect video file source to VMR9

本文是小编为大家收集整理的关于DirectShow Graph Builder无法将视频文件源连接到VMR9的处理方法,想解了DirectShow Graph Builder无法将视频文件源连接到VMR9的问题怎么解决?DirectShow Graph Builder无法将视频文件源连接到VMR9问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个应用程序,它创建一个图形,添加 VMR9 渲染器,然后使用"IFilterGraph2.renderFile"方法添加视频源并自动将 PIN 连接到渲染器.

"智能连接"算法产生序列:

[文件来源] ->[AVI 分离器] ->[MJPEG 解压器] ->[色彩空间转换器]->[VMR9]

这在 XP 和 Windows 7 平台上运行良好 - 直到我在我最新的目标笔记本电脑(也是 Windows 7 单元)上尝试它.在这台机器上,VMR9 渲染器不会自动连接到任何文件源(但其他渲染器会....)

我尝试使用"GraphStudioNext"和 GSPOT 来验证建议的图表.这些实用程序在尝试自动连接此图时会崩溃.

如果我将所有内容连接到"色彩空间"过滤器,Graph Studio 将运行整个图形,然后按规范将色彩空间过滤器连接到 VMR9.不幸的是,这不是我在应用程序代码本身中打开的选项.

有没有人解决过这种问题?关于在哪里寻找解决方案有什么建议吗?

推荐答案

是否在(新)目标机器上安装了所有必需的过滤器?
您是否尝试过在 GraphEdit 中创建图形文件并将其加载到您的代码中?

我收到了解决此问题的答案.谢谢T.B.!


该问题是由已安装在具有 MERIT_PREFERRED 评级的目标计算机上的非功能性第 3 方 DirectShow 过滤器(视频解压缩器)引起的.

通过调用 IFilterGraph.SetLogFile(.....) 启用 DirectShow 日志文件来识别失败的组件.文件的最后一行包含组件首次加载时的 GUID.

然后使用 SoftTella 的 DSFMgr 实用程序识别和确认该组件.他们很好地展示了所有可以按 GUID 排序的 DirectShow 过滤器.

日志文件是用"FILE_WRITE_THROUGH"创建的,这样每一行都会被刷新.这是必要的,因为崩溃没有留下任何跟踪信息,否则将不会保存日志文件.

有效的解决方案是将违规减压器的评级降低到 MERIT_DO_NOT_USE.其中有几个,都来自同一个第 3 方供应商.

本文地址:https://www.itbaoku.cn/post/1355854.html