簡體   English   中英

如何調試 DirectShow 推送源過濾器?

[英]How to debug DirectShow push source filter?

我嘗試了https://github.com/roman380/tmhare.mvps.org-vcam提供的基於 DirectShow 的示例虛擬相機之一
我能夠編譯和構建,並且在瀏覽器(Chrome 和 Edge)中運行良好。

但如果是 Zoom 和 Team 等桌面應用程序,虛擬攝像頭會被識別但不顯示任何幀。 在選擇這個虛擬相機時,只看到黑屏,而不是預期的 output。

在此處輸入圖像描述

我在閱讀Debugging DirectShow FiltersHow to debug c++ DirectShow filter后嘗試調試 我在output pin class 的構造函數中添加了DbgLog()

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

並在Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll Filters.dll 的LogToFile字段中設置文件路徑

在此處輸入圖像描述

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

調試基於 PushSource/VCam 的過濾器是 Zoom,與調試在外部應用程序上下文中運行的 DLL 項目的方式相同。 即程序是這樣的:

  1. 停止目標應用程序(縮放)
  2. 構建您的項目,根據需要使用 COM (regsvr32) 注冊 DLL
  3. 已啟動目標應用程序
  4. 將您的 Visual Studio 附加到正在運行的應用程序(Ctrl+Alt+P、本機代碼調試器、縮放進程)
  5. 在您的項目中放置斷點,啟用異常中斷
  6. 讓目標應用程序運行並以交互方式啟動與視頻捕獲相關的活動

步驟 3-4 可以通過設置項目設置以啟動 Zoom 作為調試目標(項目設置、調試、命令)來替換。

此外,您可能希望在此行上放置一個斷點,並查看調試 output 的確切路由到哪里。 您可能可以在集成的 Debug Output window 中看到它(在使用OutputDebugString的情況下),或者您可以檢查用於寫入日志的確切文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM