Meeting SDK vs Video SDK for raw data access

Description
We are preparing a bot that will join the zoom meeting and receive the raw data to process it as per our business needs. We could achieve it in our dev box using this article of meeting SDK (not the video SDK).

The questions I have is,

  1. can we use Meeting SDK for production as I have seen in the various articles (here, here and here) saying meeting SDK raw data is discontinued.

  2. If we can use meeting SDK, what license do we need to make a product where our bot joins our clients’ zoom meeting and access their raw data.

  3. If we cannot use meeting SDK anymore, the article about video SDK do not talk about Video but only talks about Audio. Can we have a sample for that?

Which Windows Meeting SDK version?
Knowing the version can help us to identify your issue faster.

To Reproduce(If applicable)
Not applicable

Screenshots
Not applicable

Device (please complete the following information):

  • Device: Dell
  • OS: Win 10

Additional context
Not available

Hi @nikskhubani, thanks for using the dev forum.

You can access raw audio and video through the raw recording feature linked to in your description. This does not require any sort of license. The only prerequisite for this feature is that the SDK instance has permission to start a local recording.

Thanks!

Hi @jon.zoom ,

I am using client SDK and able to get raw video using IZoomSDKRendererDelegate. But video frame resolution is quiet law ( i.e. 640 x 360 or 256 x 144) , even if I set IZoomSDKRenderer::setRawDataResolution() to ZoomSDKResolution_1080P before calling IZoomSDKRenderer ’ s subscribe() method it does not work. I have set HD video in Meeting setting
camera is HD type but of no use. May i get all user’s HD video some how ??

Thanks!

Hi @manjit.singh, thanks for using our SDK.

The resolution is dependent on several factors, so you cannot always guarantee that the requested resolution is what you will receive. Many of these variables are based around network quality, so you may see lower resolution when your network connection is unstable or slow.

In order to get 1080p video, you cannot have any other active video subscriptions. Currently the SDK only allows you to access one remote 1080p stream at a time. If you have the video of any other users displayed (not including the local user/preview video), you will not be able to receive 1080p.

Thanks!

Hi @jon.zoom , thanks for reply.

Is there any way of getting 1080p raw video/ audio of all users using Zoom client SDK ( if i have good network connection ) ??
I have a requirement of getting all users 1080p frame using client SDK.

Kindly suggest if it could be done in any way.

Thanks!

Hello @jon.zoom

thank you for your quick reply. Appreciate it.

We are facing a little challenge in the buffer received. If you see in the below image, the zoom and the data received by SDK. The YUV formate what is received is straightaway passed to our streaming platform however it seems broken from two angles:

  1. the top yellow stripe is coming
  2. the colour differences

Can you tell me what could be the reason?

Hi @manjit.singh,

You currently cannot receive multiple remote 1080p streams through the SDK, regardless of your connection quality. This is a limitation imposed by our back end and cannot be modified by the SDK.

Thanks!

Hi @nikskhubani,

It seems that you are incorrectly rendering the YUV420p video. I would suggest comparing your implementation against other renderers to determine what needs to be changed. :slightly_smiling_face:

Thanks!

Finally was able to solve it this way

below code is still not working for us in
data->GetBuffer()

so I did sort it using this way (separately processing y u and v one by one)

char* _data = new char[data->GetStreamHeight() * data->GetStreamWidth() * 3 / 2];
memset(_data, 0, data->GetStreamHeight() * data->GetStreamWidth() * 3 / 2);

	memcpy(_data, data->GetYBuffer(), data->GetStreamHeight() * data->GetStreamWidth());

	size_t loc = data->GetStreamHeight() * data->GetStreamWidth();
	memcpy(&_data[loc], data->GetUBuffer(), data->GetStreamHeight() * data->GetStreamWidth() / 4);

	loc = (data->GetStreamHeight() * data->GetStreamWidth()) + (data->GetStreamHeight() * data->GetStreamWidth() / 4);
	memcpy(&_data[loc], data->GetVBuffer(), data->GetStreamHeight() * data->GetStreamWidth() / 4);

@nikskhubani

This is really helpful, I am facing the same issue. You can refer to the thread below link.

Still, it’s really great if we can have a fix for data->GetBuffer() method.

Thank You !!!

That’s great to hear you were able to resolve this, thanks for sharing your solution!

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