0

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

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

在此处输入图像描述

我在阅读调试 DirectShow 过滤器如何调试我在类DbgLog()的构造函数中 添加的 c++ DirectShow 过滤器后尝试调试output pin

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

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

在此处输入图像描述

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

4

1 回答 1

1

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

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

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

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

于 2021-01-25T09:49:01.257 回答