Stream custom video to zoom meeting

I’m trying to create a bot that programatically joins zoom meeting. How can I send custom video and audio stream to zoom. The bot should behave as a virtual participant

Hi Jenish,
I can share how to build a meeting bot that joins meetings and interacts as a participant!If you’re using the Zoom Meeting SDK, these are the steps:

  1. Spin up a server. We recommend AWS, GCP, or Digital Ocean.
  2. Use either the Windows or Mac Zoom SDK to launch an instance of the Zoom client.
  3. Once you have the Zoom SDK launched, and use the Raw Data functionality to extract the video and audio streams.
  4. This will return the video in I420 raw frames and audio in PCM 16LE raw format, so you’ll need to encode the audio and video yourself afterwards.
  5. Once you have one instance of this working, you’ll need to scale this across several servers if you want to run multiple bots simultaneously, which is required to have bots for multiple meetings.

Another option is Recall.ai. It’s a simple 3rd party API that lets you use meeting bots to get raw audio/video from meetings and interact with participants without you needing to spend months to build, scale and maintain these bots.

We also offer a feature that allows you to stream custom video and audio back into a Zoom call. People use these to build interactive AI avatars that people can speak with on calls.

Let me know if you have any questions!

Hey @Jenish, the correct approach here is the Zoom Meeting SDK on Linux using the IZoomSDKVideoSource interface to feed custom video frames and IZoomSDKAudioRawDataHelper.setExternalAudioSource to feed custom audio into the meeting as a participant.

This requires raw data mode and runs headlessly on a server. You can refer to the official Meeting SDK Raw Data docs for implementation details.

If you prefer not to build and maintain this yourself, simulive.us may be worth exploring for automated video streaming into Zoom meetings/webinars.

Feel free to ask if you have any further questions or if there is a better way to approach this.

Thanks, Naeem Ahmed