Sending raw Video Data to the meeting

Hello!

I’ve been troubleshooting with sending raw video data to the meeting room through meeting SDK recently.

Unfortunately there are no code samples on how to use the sendVideoFrame function on linux

However, after researching on this topic for a while, I decided to override the following class: IZoomSDKVideoSource

The header file

class MyRawDataClass : public IZoomSDKVideoSource
{
// Construction
public:	
	virtual ~MyRawDataClass(){}
	virtual	void onInitialize(IZoomSDKVideoSender* sender, IList<VideoSourceCapability >* support_cap_list, VideoSourceCapability& suggest_cap) = 0;
	virtual void onPropertyChange(IList<VideoSourceCapability >* support_cap_list, VideoSourceCapability suggest_cap) = 0;
	virtual void onStartSend() = 0;
	virtual void onStopSend() = 0;
	virtual void onUninitialized() = 0;

private:
	IZoomSDKVideoSender * m_pSender;
};

The source file

void MyRawDataClass::onInitialize(IZoomSDKVideoSender* sender, IList<VideoSourceCapability >* support_cap_list, VideoSourceCapability& suggest_cap)
{
	//when set virtual video source, go here!!!
	if (!sender) return;
	m_pSender = sender;

	//capability
	if (!support_cap_list) return;
    
	unsigned int nCount = support_cap_list->GetCount();	

	for(int i=0; i < nCount; i++)
	{
		VideoSourceCapability & cap_ = support_cap_list->GetItem(i);
        std::printf("onInitialize cap index:%d: frame=%d, height=%d, width=%d \n");
	}
}

And I am stuck there don’t know how to initialize my custom class and how to retrieve the m_pSender property so I can use the sendVideoFrame function.

I require your help to tell me what I am doing wrong and how I need to implement the code above so it can work properly.

Thanks for your attention; Your help will be appreciated :heart: :slight_smile:

@stutberidze , you need to:

  1. Authenticate the Zoom SDK and wait until the bot has joined the call (status: MEETING_STATUS_INMEETING)
  2. Get a reference to the global video source helper using GetRawdataVideoSourceHelper()
  3. Set the bot’s external video source to your custom class using setExternalVideoSource()
  4. Then your onInitialize callback will be invoked when the bot is ready to start outputting video

Another option is Recall.ai .
It’s a simple 3rd party API that lets you use meeting bots to send and receive raw audio/video from meetings without you needing to spend months to build, scale and maintain these bots. Might be worth checking out.

Let me know if you have any questions!

@stutberidze,

I’ve updated the sample to include sending raw audio and raw video.
The conversion / compression is not included as it requires 3rd party library such as ffmpeg or opencv