Probé una de las cámaras virtuales de muestra basadas en DirectShow disponibles en https://github.com/roman380 /tmhare.mvps.org-vcam
Puedo compilar y compilar y funciona bien en los navegadores (Chrome y Edge).

Pero en el caso de una aplicación de escritorio como Zoom y Team, la cámara virtual se reconoce pero no muestra ningún marco. Al seleccionar esta cámara virtual, solo se ve la pantalla negra, no la salida esperada.

enter image description here

Intenté depurar después de leer depurar filtros DirectShow y Cómo depurar el filtro DirectShow de c ++ Agregué DbgLog() en el constructor de la clase output pin como

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

Y establezca la ruta del archivo en el campo LogToFile de Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll

enter image description here

Pero no veo ninguna cadena de registro en vcam-log.txt. ¿Qué me falta o cómo obtener una cadena de registro en ese archivo?

0
Alok Singh Mahor 25 ene. 2021 a las 12:32

1 respuesta

La mejor respuesta

La depuración del filtro basado en PushSource / VCam es Zoom debe realizarse en la misma línea que la depuración de un proyecto DLL que se ejecuta en el contexto de una aplicación externa. A saber, el procedimiento es este:

  1. Detener la aplicación de destino (Zoom)
  2. Cree su proyecto, registre la DLL como / si es necesario con COM (regsvr32)
  3. Iniciar la aplicación de destino
  4. Adjunte su Visual Studio a la aplicación en ejecución (Ctrl + Alt + P, depurador de código nativo, proceso de Zoom)
  5. Ponga puntos de interrupción en su proyecto, habilite la interrupción en excepciones
  6. Haga que la aplicación de destino se ejecute e inicie de forma interactiva la actividad relacionada con la captura de video

Los pasos 3-4 se pueden reemplazar configurando la configuración del proyecto para iniciar Zoom como destino de depuración (Configuración del proyecto, Depuración, Comando).

Además, es posible que desee poner un punto de interrupción en esta línea y vea a dónde se dirige exactamente la salida de depuración. Es posible que pueda verlo en la ventana de salida de depuración integrada (en el caso del uso de OutputDebugString) o podría verificar qué archivo se está utilizando exactamente para escribir el registro.

1
Roman R. 25 ene. 2021 a las 09:49