Issue receiving remote participants raw video

Facing issue receiving remote participants raw video data. I have implemented the IZoomVideoSDKDelegate and IZoomVideoSDKRawDataPipeDelegate interfaces.

On user join and user video status changed I am receiving the call back. From list of users received in OnUserJoin call back, I am taking the remote user pipe from User object and subscribing to the user pipe by passing my custom video sdk raw data pipe delegate. Before subscribing I am checking video statistics like height and width and based on the height and width, I am passing the subscription resolution but I am getting both height and width as zero. I am also receiving onRawDataFrameReceived call back but in that call back, buffer length is zero.

VideoPipe VideoNetworkStatus shows normal
VideoPipe isOn shows true
VideoPipe DeviceName shows username

please let me know how to resolve this

@chunsiong.zoom

currently I am able to receive raw video feed after setting sdk obj param indirectRawData = false, but I am getting 160x90 resolution 10 fps even though I have subscribed for 1080P

any suggestions?

@abdulwazeed , you might only be able to subscribe to 1 user at 1080p.

How many users do you estimate to have?

If you have 5 users, you might be able to subscribe
1 x 720p
4 x 360p

If you have much more users, you can subscribe up to 34 users at 160x90 each

Hi @chunsiong.tan
Currently, In my sample application, I have just two user per session, one is the linux application which I am developing and the other user is a remote user joining through a windows sample application.

@abdulwazeed ,

There are automatic compression which is done, and these are affected by various factors.
There should be higher resolution when there is better network quality, and compute power available on the sender’s side.

It might be better to test it with 3 users instead of the current 2 users.

1 Like

Hello @chunsiong.zoom

we are working with session containing 3 users, each user has full hd camera. network bandwith is over 100 Mbps for all the three users. the users are :- 2 on windows application and 1 on linux application. We are getting only 160x90p resolution on linux application for the other two users, even though we are subscribing for 1080p resolution. Is there anything we can do to get better resolution in our linux application.

@abdulwazeed, I would recommend subscribing to 720p in this case.

Only for 1:1 call, and if the conditions are met, you can have up to 1080p resolution.

Another factor would be the number of core and memory which is made available to the SDK.

In this case, you might want to scale up the CPU and RAM if you are running this in a container environment.

By the way, are you running any complex algorithm when processing / saving the raw video?

Will try subscribing with 720p. I am not using a container environment, using a 12 core 64 gb ram server for linux application. Not using any complex algorithm, currently just on frame received writing the yuv data to file.

1 Like

hi @chunsiong.zoom

i tried to subscribe 720p and 360p but always am getting 90p
Not using any complex algorithm ,just printing the frame length and height

@shiju how many users are in the session, and how many raw videos are you subscribing to?

@chunsiong.zoom 2 users

one user is using videosdk_demo.exe and other one is my application integrated with zoom video sdk library

@chunsiong.zoom
the videosdk_demo.exe is running in i5 6th gen having 16GB Ram
other one using a 12 core 64 gb ram server and here am doing subscribe

@shiju can you test out with more normal users? 1:1 test is not a good validation, esp when both of them are bots.

The rational is that without real users, the video which is being sent and received might be optimised to a minimal resolution

@chunsiong.zoom
The issue here is i can’t assure that always more than 2 users and one more thing I didn’t get what u mean by bots here

@shiju , for a session to be useful, there should be 2 or more users communicating with each other.

Typically they would be turning on their video. The resolution of the view being sent and received depends on the size of the screen on the receiving end.

Hence I’m recommending to test with 2 or more users for this case.

@chunsiong.zoom my application is running in headless linux machine no display

@chunsiong.zoom that I already tested the output is if I subscribe first user am getting 90 p and if subscribe 2 nd am getting 180p

@shiju ,

Here’s my test.
I’ve 2 browsers (user 1 and user 2) which are sending and receiving video.

I have a linux instance which is subscribing to user 1 and user 2’s video.

ZoomVideoSDKRawDataPipeDelegate::ZoomVideoSDKRawDataPipeDelegate(IZoomVideoSDKUser *user)

{
user_->GetVideoPipe()->subscribe(ZoomVideoSDKResolution_360P, this);
}

Sometimes the first few frames on the linux instance, the resolution subscribed to might be low (90p or 180p), but after a few seconds it should scale up to 360p or higher, depending on the resolution which you have specified and the conditions (network, CPU etc…)

@chunsiong.zoom thanks for u r response

We will try and let u know