【问题标题】:How to debug DirectShow push source filter?如何调试 DirectShow 推送源过滤器?
【发布时间】:2021-04-29 02:23:21
【问题描述】:

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

但如果是 Zoom 和 Team 等桌面应用程序,虚拟摄像头会被识别但不显示任何帧。选择此虚拟相机时,仅黑屏可见,而不是预期的输出。

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

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

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

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

【问题讨论】:

    标签: c++ debugging com directshow virtual-webcam


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多