UVC camera control with the API

We got a question on UVC control: I’m posting the question and answer here, because it might be of interest to other folks:

Q:

With the camera UVC, if the driver is not detected, will the API still attempt to spit out strings for control? We are having an issue with existing HDMI vaddio’s being in most spaces so USB is not an option. We want to grab the feedback with a processor and then send strings to the camera if possible.

A:

I checked with our UVC expert: If the camera reports that it can be controlled by UVC, then The Zoom Room will probably send some kind of initialization string commands to the camera, even if you don’t use the API or twiddle the controls on the standard iPad controller.

If you send API commands to modify PTZ, those API commands will ask the Zoom Room to send the commands to the camera, but the Zoom Room will only do that if the camera reports that it supports UVC.

If you can somehow disable the UVC driver, the camera will report that it can’t be controlled by UVC. In this case, the Zoom Room will not send any strings to the camera, either for initialization, or as a result of calling API commands.

However, it may not be possible to disable the UVC part, but still keep the camera USB drivers active.

If you are doing a fully custom Zoom Room Controller using the ZR-CSAPI, then you can always just not call the API commands that control the PTZ, and instead rig up your own plumbing to control the camera. But if the camera reports to the Zoom Room that it can be controlled via UVC, then there is a possibility that the Zoom Room might send UVC initialization strings when the Zoom Room boots up, or maybe every time a meeting starts. I do not know if you can hook up your plumbing, and also have the Zoom Room sending the initialization commands. That would require experimentation.

Hi Scott,

I am not finding the “API commands to modify PTZ” as you describe within the “Zoom Rooms Control System API Reference Version 1” document. Are you saying that if you send raw UVC commands such as “dwPanAbsolute = 1200” the API will forward that command to the currently connected camera assuming it supports UVC? Also forgive my lack of knowledge on the UVC command structure/syntax, I haven’t looking that hard into it yet before seeing if this will work. It should be mentioned I am using a mixture of Win/Mac as well, not sure if that will effect this in any way.

Matt: The ZR-CSAPI does not yet have commands to do PTZ. Those commands will be added in v2,
which is scheduled for for later in the year: https://support.zoom.us/hc/en-us/community/posts/360017969406-ZR-CSAPI-Roadmap-detail

So, unfortunately, we don’t have the plumbing in place for you to control PTZ via the ZR-CSAPI.

One possible option, that may or may not work: If the PTZ camera also has a serial interface for control, your automation controller can connect directly to that; but it would have to be tested; if the camera also reports UVC to the Zoom Room via USB, the Zoom Room might want to send commands to the camera for things like initialization, even if you are not using the iPad Zoom Room controller to do PTZ control.