Hey all. Definite new guy here, mostly asking some somewhat general questions about UVC devices. I’ve been tasked with writing a Microsoft Teams Room plugin that allows for PTZ camera control for UVC-compatible cameras. At the moment, I’ve tried a couple of different things in the Node/Chrome world to get control and have hit a few snags. As you can imagine, I need the actual video stream to keep going to the MTR application even while my application is moving the camera. So far, that’s been the big stopping point for me. I can use something like the node-usb package with a usbdk backend and get control of the camera, but that prevents other applications from accessing the video stream. I’ve also attempted to use the Chrome mediaStream API to gain control, but the same thing happens. Other applications can’t access the video stream. 1st question: is this even possible? This is where I’ve been doing a lot of reading and learning about how this stuff all works to figure that out. 2nd: Would I be better off writing either a software level driver to try and accomplish what I want or trying to write (or hire someone to write) some sort of filter driver? Andrew
I should also note, I’ve been testing with a Logitech C930e camera that’s using the usbvideo.sys driver. I have noted that if I have the Logitech Camera settings application open, Zoom can’t access the camera, and vice versa… whichever piece of software got access first wins.
To be specific, if one application is streaming from the camera, then no other application can start streaming. However, it is quite possible (with most drivers) to open a second instance and control the camera, even if another application is streaming. The old Windows Media Center application required that behavior, so most drivers did it, and I think usbvideo.sys follows that.
So, you don’t need a driver. With Zoom streaming, you should be able to have an application open an instance of the driver with DirectShow, WITHOUT streaming, and send pan/tilt/zoom KS property requests to it.