c# - 如何在其他计算机上运行 DirectShow.net 应用程序

标签 c# directshow directshow.net

我有一个 C# DirectShow.Net 应用程序,我想测试它在其他计算机上以 Release模式运行。我怎样才能确保我的程序能够在其他不包含 windows sdk 和它可用的过滤器的机器上运行?

我必须包含 dirctshow dll 等,但是我能对过滤器本身做些什么呢?

更新: 我有虚拟机可以运行它,但此外,我如何确保某个 directx 过滤器在计算机上,如果没有,获取 dll 并通过代码将其注册到计算机?

编辑: 在我注册了 DLL 之后,我运行我的程序。它没有运行,所以我捕获了 graphstudio,并将我的程序的图形附加到 graphstudio,但没有连接任何过滤器,当我尝试手动连接它们时,它们拒绝连接。

编辑2:

Can you post more details about the scenario you are having problems with? 

我正在运行我的应用程序,该应用程序可以在我的 Virtualbox VM 上的 Windows 7 32 位机器上运行。 virtualbox 不允许我访问我的 usb 设备以进行流式传输,所以我注释掉了依赖它的代码。当我运行它时,过滤器无法连接。我做了一些测试,并尝试在没有源代码的情况下重新创建图表,但它们无法连接在一起,所以这实际上可能是问题所在。

OS version? 

目前我正在运行 32 位 XP virtualbox 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 由于一些奇怪的原因必须是小写的。 dev机器有(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 中提供,这在我所在的地方下载起来很痛苦。

最佳答案

以下是您可以执行的一些验证的列表:

  • 正如@HiperiX 所说,这是个好主意 以干净的方式测试您的应用程序 系统,也许使用一些 虚拟化软件。如果你需要 能支持Win XP就好了 也想在那里测试它,因为 有一些 DirectShow 过滤器 仅在 Win Vista 中可用 及以后。
  • 关于所需的过滤器,一些 它们可能由 Windows 提供。 那些不是,你必须提供 它们并将它们注册到目标中 安装过程中的系统 你申请的过程。我会 建议在这种情况下创建一个 视觉安装项目 工作室并附上你所有的 那里的依赖dll。对于手册 安装你可以复制你的 过滤到应用程序的文件夹 并使用 regsvr32 注册它们 filtername.ax 来自命令行。
  • 您还需要注意一个细节 关心的是与 64 位的兼容性 Windows 版本,因为您不能 使用为 32 位 native 构建的过滤器 来自 64 位应用程序的模式。如果 您的应用程序是在 .net,它是使用 AnyCPU 构建的 模式,.net JIT 将创建 64 位 它的代码和你的 32 位 dll 将无法加载。所以如果你是 我会推荐使用 32 位 dll 构建您的 .net 应用程序 CPU 类型 = X86。您可以设置此模式 在你的项目配置中 Visual Studio 。
  • 取决于您的过滤条件 创建后,您可能还需要安装 Visual c++ redistributable files .
  • 关于这条评论:

I did some testing and tried to recreate the graphs without the source and they wont connect together

这当然是一个 问题,您无法创建图形 没有源过滤器和 目标过滤器。源过滤器 一般会确定内容 格式,压缩,色彩空间等, 等等 为了测试这个 应用程序与虚拟系统你 需要提供对您的直接访问 虚拟化操作系统中的 USB 端口 并为您安装驱动程序 在那里捕获设备,就像在真实的 系统。否则 DirectShow 不会 检测您的设备。

关于c# - 如何在其他计算机上运行 DirectShow.net 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497544/

相关文章:

c# - 使用NEST在ElasticSearch的IEnumerable属性上配置分析器的问题

c# - 在 Windows 中提取任何文件的缩略图

c# - wpf中不显示路径

audio - 如何在directshow中选择音频输出设备

C# + DirectShow.NET = 简单的网络摄像头访问?

c# - 使用 linq 实例化包含其他对象列表的对象,其中查询条件位于内部列表上

c# - DirectShow 在我用来解密缓冲流的源过滤器 (UNSUPPORTED_STREAM) 上抛出错误

c# - 使用DirectSound设置不同的音频输出

ffmpeg - 为 WMAsfReader 生成有效的 ASF 文件

c# - 无法在 IGraphBuilder.RenderFile 中使用 COM 异常播放 MP3 文件