我有一个C#DirectShow.Net应用程序,我想在发布模式下测试它在其他计算机上运行。我如何确保我的程序将运行在其他没有包含Windows sdk的机器上以及它所使用的过滤器?
我将不得不包括dirctshow dlls等,但我可以对滤镜本身做些什么呢?
更新: 我有虚拟机来运行它,但是我怎样才能确保计算机上有某个directx过滤器,如果不是,请抓住dll并从代码中将它注册到计算机上?
编辑: 我有DLL注册后运行我的程序。它没有运行,所以我抓住graphstudio并将程序的图形附加到graphstudio并且没有连接过滤器,当我尝试手动连接它们时它们拒绝连接。
Edit2:
Can you post more details about the scenario you are having problems with?
我正在运行我的应用程序,该应用程序在我的Virtualbox VM上的Windows 7 32位机器上运行。虚拟机不允许我访问我的USB设备用于流式传输,所以我注释掉了依赖它的代码。当我运行它时,过滤器不会连接。我做了一些测试并尝试重新创建没有源的图形,它们不会连接在一起,所以这实际上可能是问题。
OS version?
目前我正在运行32位XP虚拟机VM
which filters you are using?
我正在使用
Source -> Smart tee (capture) -> GMFBridgeSinkFilter
Smart tee (preview) -> AVI Decompressor -> Video REnderer
GMFBridgeSource -> ffdshow video encoder -> avi mux -> File writer
(w)riter必须是小写的,因为某些奇怪的原因。开发机器有(w)riter和(W)riter
Which filters do you have there that you are not using?
你的意思是操作系统或过滤器中的标准是哪些是代码中的标准,而不是连接到?
You could also try with the original GraphEdit instead of GraphStudio, and you could debug your application remotely and see where it is failing exactly.
Graphedit只出现在完整的Windows sdk中,这是一个很难下载的地方。
答案 0 :(得分:1)
以下是您可以执行的一些验证的列表:
regsvr32
filtername.ax
注册它们。AnyCPU
构建的
模式,.net JIT将创建64位
来自它的代码和你的32位dll
将无法加载。所以,如果你是
使用32位dll我会建议
用。构建你的.net应用程序
CPU类型= X86。您可以设置此模式
在您的项目配置中
Visual Studio。我做了一些测试并尝试重新创建没有源的图形,它们不会连接在一起
这当然是一个 问题,你无法创建图表 没有源过滤器和a 目标过滤器。源过滤器 一般会确定内容 格式,压缩,色彩空间等, 等。为了测试这个 应用虚拟系统你 需要提供直接访问您的 虚拟化操作系统内的USB端口 并为您安装驱动程序 在那里捕获设备,就像在真实中一样 系统。否则DirectShow不会 检测你的设备。