微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何调试 DirectShow 推送源过滤器?

如何解决如何调试 DirectShow 推送源过滤器?

我尝试了 https://github.com/roman380/tmhare.mvps.org-vcam
提供的基于 DirectShow 的示例虚拟相机之一 我能够在浏览器(Chrome 和 Edge)中进行编译和构建,并且可以正常工作。

但在桌面应用程序(如 Zoom 和 Team 虚拟相机)被识别但不显示任何帧的情况下。选择此虚拟摄像机时,只能看到黑屏,而不是预期的输出

enter image description here

我在阅读 Debugging DirectShow FiltersHow to debug c++ DirectShow filter 后尝试调试 我在 DbgLog() 类的构造函数添加output pin,例如

DbgLog((LOG_TRACE,3,TEXT("test string")));

并在 LogToFileComputer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll 字段中设置文件路径

enter image description here

但我在 vcam-log.txt 中没有看到任何日志字符串。 我缺少什么或如何在该文件获取日志字符串?

解决方法

调试基于 PushSource/VCam 的过滤器是 Zoom,与调试在外部应用程序上下文中运行的 DLL 项目相同。即程序是这样的:

  1. 停止目标应用程序(Zoom)
  2. 构建您的项目,根据需要使用 COM (regsvr32) 注册 DLL
  3. 启动目标应用程序
  4. 将您的 Visual Studio 附加到正在运行的应用程序(Ctrl+Alt+P、本机代码调试器、缩放进程)
  5. 在您的项目中放置断点,启用异常中断
  6. 让目标应用程序运行并以交互方式启动与视频捕获相关的活动

步骤 3-4 可以替换为设置项目设置以启动 Zoom 作为调试目标(项目设置、调试、命令)。

此外,您可能希望在 this line 上放置一个断点,并查看调试输出的确切位置。您可能能够在集成的调试输出窗口中看到它(在使用 OutputDebugString 的情况下),或者您将能够检查究竟是哪个文件用于写入日志。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。