DirectShow USB webcam cambia la fuente de video

Hola, todo lo que estoy tratando de encontrar la configuración para cambiar mi fuente de video a "compuesto" en mi cámara web. Parece que si desconecto el USB y luego lo vuelvo a conectar y enciendo el código, acaba de aparecer una pantalla en blanco. Pero una vez que cambio la fuente de video (en otro programa) y luego vuelvo y ejecuto mi código nuevamente, aparece.

Así que necesito algo que me permita cambiar eso para que suceda lo mismo pero dentro de mi propia aplicación sin tener que iniciar otro programa que tenga esa función para configurar la cámara web.

Cuando saco el cable USB, lo vuelvo a poner y ejecuto el código fuente, la caja de imágenes de la aplicación es negra.

El "otro programa" que utilizo para cambiar la fuente de video (que parece funcionar para mostrar la imagen):

Después de usar ese "otro programa" vuelvo al código fuente y lo ejecuto, y esto es lo que obtengo entonces:

Estoy usando el código C # llamado dot Net Webcam Library desde aquí:introduzca la descripción del enlace aquí

Parece usar el DirectShow deintroduzca la descripción del enlace aquí

He notado en la fuente que enumera diferentes tipos de configuraciones de video (que se encuentran a continuación en AXExtend.cs):

public enum PhysicalConnectorType
{
    Video_Tuner = 1,
    Video_Composite,
    Video_SVideo,
    Video_RGB,
    Video_YRYBY,
    Video_SerialDigital,
    Video_ParallelDigital,
    Video_SCSI,
    Video_AUX,
    Video_1394,
    Video_USB,
    Video_VideoDecoder,
    Video_VideoEncoder,
    Video_SCART,
    Video_Black,

    Audio_Tuner = 0x1000,
    Audio_Line,
    Audio_Mic,
    Audio_AESDigital,
    Audio_SPDIFDigital,
    Audio_SCSI,
    Audio_AUX,
    Audio_1394,
    Audio_USB,
    Audio_AudioDecoder,
}

Pero no estoy seguro de cómo llamar eso en el código aquí:

Device selectedDevice = device as Device;
imageCapture.Device = selectedDevice as Device;
imageCapture.PerformAutoScale();
imageCapture.Refresh();
imageCapture.Start();

¿Entonces supongo que el "Video_Composite" es lo que puedo necesitar para hacer eso?

Cualquier ayuda seria genial !!! ¡Gracias!

David

Actualización de código

foreach (Device device in Device.FindDevices())
{
   if (device.ToString() == "BackupCamera")
    {
        Device selectedDevice = device as Device;
        IGraphBuilder graphBuilder = new FilterGraph() as IGraphBuilder;
        DsDevice device1 = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice)[1]; // <<--- Your Device
        Guid baseFilterIdentifier = typeof(IBaseFilter).GUID;
        object videoSourceObject;
        device1.Mon.BindToObject(null, null, ref baseFilterIdentifier, out videoSourceObject);
        IBaseFilter videoSourceBaseFilter = videoSourceObject as IBaseFilter;
        graphBuilder.AddFilter(videoSourceBaseFilter, "Source");
        ICaptureGraphBuilder2 captureGraphBuilder = new CaptureGraphBuilder2() as ICaptureGraphBuilder2;
        captureGraphBuilder.SetFiltergraph(graphBuilder);
        object crossbarObject;
        captureGraphBuilder.FindInterface(FindDirection.UpstreamOnly, null, videoSourceBaseFilter, typeof(IAMCrossbar).GUID, out crossbarObject);
        IAMCrossbar crossbar = crossbarObject as IAMCrossbar;
        int inputPinCount, outputPinCount;
        crossbar.get_PinCounts(out inputPinCount, out outputPinCount); // <<-- In/Out Pins
        // Pin Selection: Physical Input 2 (e.g. Composite) to Capture Pin 0 
        crossbar.Route(0, 2);

        imageCapture.Device = selectedDevice as Device;
        imageCapture.PerformAutoScale();
        imageCapture.Refresh();
        imageCapture.Start();
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta