# Zoom Bot Streaming Video

**URL:** <https://devforum.zoom.us/t/zoom-bot-streaming-video/94284>\
**Category:** Meeting SDK\
**Tags:** video-sdk\
**Created:** [August 31, 2023, 4:13pm UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284 "2023-08-31T16:13:26Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![engineeredinnovation](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/engineeredinnovation/32/51604_2.png) [@engineeredinnovation](https://devforum.zoom.us/u/engineeredinnovation)\
**Post date:** [August 31, 2023, 4:13pm UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/1 "2023-08-31T16:13:26Z")

</div>

I am working on a project where I want to stream a bot’s video/avatar to a meeting. I know I can create a Zoom bot, but I’m having trouble understanding which SDKs and APIs I can use (or if they even exist) to stream video TO the zoom meeting. Any help is appreciated!

---

<div class="post-metadata">

**Author:** ![amanda-recallai](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/amanda-recallai/32/44747_2.png) [@amanda-recallai](https://devforum.zoom.us/u/amanda-recallai)\
**Post date:** [September 9, 2023, 1:49am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/2 "2023-09-09T01:49:37Z")

</div>

@engineeredinnovation, happy to break down how you could build a meeting bot and stream audio/video to the bot avatar.

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 video output functionality to stream video into the meeting.
4. 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 the raw audio/video from meetings + output video/audio without you needing to spend months to build, scale and maintain these bots.

Let me know if you have any questions!

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [September 11, 2023, 2:42am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/3 "2023-09-11T02:42:19Z")

</div>

@engineeredinnovation ,

You will need to run your bot on macos, windows or linux.

- Create your own avatar using your own libraries or 3rd party library
- Stream the avatar’s video using raw video send capabilities of the SDK (macos, windows or linux)

This send capability is something like a virtual camera, where you can stream in your own video source instead of getting it from a webcam

---

<div class="post-metadata">

**Author:** ![chloe3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chloe3/32/53219_2.png) [@chloe3](https://devforum.zoom.us/u/chloe3)\
**Post date:** [October 27, 2023, 11:56am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/4 "2023-10-27T11:56:02Z")

</div>

Are there any examples of streaming video using the raw video send capabilities for the Linux Meeting SDK?

---

<div class="post-metadata">

**Author:** ![amanda-recallai](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/amanda-recallai/32/44747_2.png) [@amanda-recallai](https://devforum.zoom.us/u/amanda-recallai)\
**Post date:** [October 29, 2023, 1:14am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/5 "2023-10-29T01:14:49Z")

</div>

Welcome for the dev forum @chloe3!  
Here is an example of the Linux SDK, but I don’t think it showcases raw video send capabilities: [GitHub - zoom/meetingsdk-linux-raw-recording-sample](https://github.com/zoom/meetingsdk-linux-raw-recording-sample) (courtesy of @chunsiong.zoom)

Another option is [Recall.ai](https://www.recall.ai/). It’s a simple 3rd party API that lets you use meeting bots to send raw audio/video into meeting meetings + capture video/audio without you needing to spend months to build, scale and maintain these bots.  
Let me know if you have any questions!

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [October 31, 2023, 2:31am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/6 "2023-10-31T02:31:18Z")

</div>

@chloe3 what is the use case for sending raw video?  
I’m checking if there is demand for such samples

---

<div class="post-metadata">

**Author:** ![chloe3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chloe3/32/53219_2.png) [@chloe3](https://devforum.zoom.us/u/chloe3)\
**Post date:** [October 31, 2023, 8:14am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/7 "2023-10-31T08:14:38Z")

</div>

@chunsiong.zoom similar to the use case above, I have a pre-recorded video of a bot that I would like to join the meeting with a greeting. Is it possible to have the bot join and have the video play as the bots camera or have the bot share its screen to play that video?

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [October 31, 2023, 8:32am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/8 "2023-10-31T08:32:57Z")

</div>

@chloe3 ,

> have the bot join and have the video play as the bots camera

This scenario is definitely possible.

You can use the IZoomSDKVideoSource interface to do so.  
It is similar to specifying your own webcam, but instead of a device, you are playing the video via a file.

Do note that sending audio is a separate thing, and requires the use of a virtual microphone

```auto
	//SendVideoRawData
	if (isVideo) {
        std::string DEFAULT_VIDEO_SOURCE = "Big_Buck_Bunny_720_10s_10MB.mp4";
		ZoomSDKVideoSource* virtual_camera_video_source = new ZoomSDKVideoSource(DEFAULT_VIDEO_SOURCE);
		IZoomSDKVideoSourceHelper* p_videoSourceHelper = GetRawdataVideoSourceHelper();

		if (p_videoSourceHelper) {
			SDKError err = p_videoSourceHelper->setExternalVideoSource(virtual_camera_video_source);

			if (err != SDKERR_SUCCESS) {
				printf("attemptToStartRawVideoSending(): Failed to set external video source, error code: %d\n", err);
			}
			else {
				printf("attemptToStartRawVideoSending(): Success \n");
				IMeetingVideoController* meetingController = m_pMeetingService->GetMeetingVideoController();
				meetingController->UnmuteVideo();

			}
		}
		else {
			printf("attemptToStartRawVideoSending(): Failed to get video source helper\n");
		}
	}

```

```auto
	//SendAudioRawData
	if (isAudio) {
        std::string DEFAULT_AUDIO_SOURCE = "Big_Buck_Bunny.wav";
		ZoomSDKVirtualAudioMicEvent* audio_source = new ZoomSDKVirtualAudioMicEvent(DEFAULT_AUDIO_SOURCE);
		IZoomSDKAudioRawDataHelper* audioHelper = GetAudioRawdataHelper();
		if (audioHelper) {
			SDKError err = audioHelper->setExternalAudioSource(audio_source);
		}
	}

```

---

<div class="post-metadata">

**Author:** ![chloe3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chloe3/32/53219_2.png) [@chloe3](https://devforum.zoom.us/u/chloe3)\
**Post date:** [November 1, 2023, 9:54am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/9 "2023-11-01T09:54:43Z")

</div>

Thanks @chunsiong.zoom!

I have added in this code, but when trying it out I keep getting the below error - I was wondering if there is a particular format or size the video needs to be?

```auto
onStartSend
[WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (873) open OpenCV | GStreamer warning: Error opening bin: unexpected reference "test-video.mp4" - ignoring
[WARN:0] global ./modules/videoio/src/cap_gstreamer.cpp (616) isPipelinePlaying OpenCV | GStreamer warning: GStreamer: pipeline have not been created
ERROR! Unable to open camera

```

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [November 1, 2023, 11:32am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/10 "2023-11-01T11:32:50Z")

</div>

@chloe3 this seems like an openCV issue.

To send video, you need to ensure it is in YUV420 format

---

<div class="post-metadata">

**Author:** ![praveen.i](https://avatars.discourse-cdn.com/v4/letter/p/f04885/32.png) [@praveen.i](https://devforum.zoom.us/u/praveen.i)\
**Post date:** [February 15, 2024, 1:56pm UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/11 "2024-02-15T13:56:05Z")

</div>

```
    const client = ZoomMtgEmbedded.createClient()
    let meetingSDKElement = document.getElementById('meetingSDKElement')
    client.init({ zoomAppRoot: meetingSDKElement!, language: 'en-US' })
    await client.join({
        sdkKey: sdkKey,
        signature: generateSignature(sdkKey, clientPassword, meetingNumber, "1"),
        meetingNumber: meetingNumber,
        password: meetingPassword,
        userName: userName
    });                                                                                                                                                                                              

```

I am currently utilizing this for connecting with a client, but now I desire to connect with a bot and configure the bot’s video. How can I accomplish this?

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [February 16, 2024, 4:49am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/12 "2024-02-16T04:49:36Z")

</div>

@praveen.i please open a seperate thread and tag me

---

<div class="post-metadata">

**Author:** ![chunsiong.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/chunsiong.zoom/32/35488_2.png) [@chunsiong.zoom](https://devforum.zoom.us/u/chunsiong.zoom)\
**Post date:** [February 16, 2024, 4:49am UTC](https://devforum.zoom.us/t/zoom-bot-streaming-video/94284/13 "2024-02-16T04:49:40Z")

</div>


