Raw Data video input does not work if there is no physical camera on Mac

Description
We are using the macOS Client SDK with the customized UI in our application. The task is to send the raw data video to the Zoom meeting.
Everything works fine when there is a physical web camera connected to Mac. We have noticed that even if we are using the ZoomSDKVirtualVideoSourceDelegate (Virtual Video Source), the physical web camera is turned on for several seconds at the beginning of the meeting, then it is turned off and video that we send to the ZoomSDKRawDataSender is displayed in the Zoom meeting.
When the application runs on Mac with no connected camera, video does not show up in the Zoom meeting.
During further investigation we saw that -onStartSend method of the ZoomSDKVirtualVideoSourceDelegate is never called on the machine with no web camera.
Is there any way to send the video raw data to the Zoom meeting if there is no physical camera device connected to the Mac?

Which macOS Client SDK version?
macOS Big Sur 11.4,
macOS Big Sur 11.0.1,
macOS Monterey 12.0 Beta 3
Zoom Client SDK v. 5.5.12511.0420

Device (please complete the following information):

  • Device: Apple Mac mini (2020, M1); Apple Mac mini (late 2018)
  • OS: macOS Big Sur 11.4, macOS Big Sur 11.0.1, macOS Monterey 12.0 Beta 3

Additional context
Methods -onInitialize and -onUninitialize of the ZoomSDKVirtualVideoSourceDelegate are being called no matter if the web camera is present.
If we connect the camera to the Mac, the raw data sending feature starts working.

Hi @mcfly, thanks for the post.

This is an interesting use case. I think I know what is going on here, but I am partially speculating since I do not have a camera-less device to confirm.

When you send raw video data, the onStartSend callback usually indicates that the user’s video input is open. If we were to compare this to the Zoom client, this would be called when the user clicks the Start Video button in the meeting UI. Typically, the Zoom client will change the appearance and behavior of these buttons when starting a user’s video is not an option (e.g. a meeting has video disabled, you are a non-panelist attending a webinar, etc.). My hunch is that one of these scenarios is when there are no viable video input devices detected on the user’s machine.

Assuming that the above is true, there are two potential workarounds. The first would be what you have already identified: to plug in a physical camera device to your machine. Understandably, it seems that this approach is not ideal for your use case.

The other option would be to setup a virtual camera on your device that can be detected by the Zoom client. This should allow the onStartSend callback to be triggered as if you were going to begin sending video.

Beyond those workarounds, we will need to investigate adding a feature that allows you to bypass this requirement, since this goes outside of the normal flow of what is expected when sending video from an SDK instance. I will keep you updated on that front. :slightly_smiling_face:

Thanks!

Hi @jon.lieblich ,
Unfortunately, none of workarounds you proposed works in our case.
Connecting the physical camera is not an option because the core application is Mac Catalyst app and on the Catalina OS Catalyst apps do not have access to the cameras, even if the physical camera is connected to the Mac.
The virtual camera device does not work too - we have previously developed the virtual webcam driver that is discovered by the Zoom for Mac app, but is not discovered by the Zoom SDK within our Catalyst app even on Big Sur and Monterey beta.
Hope that the feature will appear in the SDK soon.
If this is possible, please keep me informed.
Best regards.

Hi @mcfly,

Thanks for explaining why these workarounds are not viable for you at this time. I will be sure to let you know once we have any updates as we continue investigating this.

Thanks!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.