ZoomSDKNormalVideoElement displays no video in some cases

Description
Hi all.

I’m developing a macOS application using Zoom SDK which shows participants from the meeting in the custom UI similar to the Grid View which is implemented in the native Zoom app.
I’m using ZoomSDKNormalVideoElement objects to build my grid and in most of cases it works well.
But rarely some of this video elements show nothing though they always created and resized correctly without any error. But when this issue happens ZoomSDKVideoContainerDelegate’s method onCustomVideoSubscribeFail:error: returns an error with code 6.

So I have two questions and hope you could help me:

  1. What does this error code mean and how it should be processed?
  2. Is there any workaround which I could use in this case (e.g. reinstantiate failed video element or try resizing it or something else)?

Which Client macOS SDK version?
5.4.54528.1230

To Reproduce(If applicable)
Unfortunately I can’t provide steps to reproduce but I noticed that this issue happens more often when my applications connects to the meeting with a lot of participants (15+). Also I would like to add that this issue happens when my app connects to the meeting just after it has been started.

Device (please complete the following information):

  • Device: Apple iMac (Retina 5K, 27-inch, Late 2015)
  • OS: macOS Big Sur 11.2.1

Hi @yuriy.belozerov, thanks for using the dev forum.

Sorry to hear you’re running into this issue intermittently when subscribing to user videos. Are you certain that the error code is 6 and not 5? Additionally, can you please provide some additional context on how you are setting up the user video (i.e. is it all being done simultaneously when joining a meeting or is it over a short period of time as many users join)?

Lastly, if you could provide the logs (the file will be encrypted) so we can further investigate this, that would be great.

Thanks!

Hi @jon.lieblich

Are you certain that the error code is 6 and not 5?

Yes I’m pretty sure that this function is called with error code 6. There are some of my logs:

video element for participant 16796672 has been created with status: Success
video element for participant 16796672 has been resized with status: Success
video view for participant 16796672 has been added to container
video element for participant 16796672 has been resized with status: Success
video element with user id 16796672 failed custom video subscribe with error: 6

Additionally, can you please provide some additional context on how you are setting up the user video (i.e. is it all being done simultaneously when joining a meeting or is it over a short period of time as many users join)?

Sure I will share this logic with you. My application joins to a meeting with some participants as an anonymous user. After successful joining it obtains a list of all users from the SDK and simultaneously (through the cycle) creates video elements for them. And some of these elements may be “empty” i.e. display no video.

Lastly, if you could provide the logs (the file will be encrypted) so we can further investigate this, that would be great.

Sure I can but just to be clear, should this logs be generated somehow from my application? What should they contain in this case? Or there is a way to collect some logs provided by Zoom SDK?

Hi @yuriy.belozerov,

Thanks for confirming the error code. The logs should be visible under ~/Library/Logs/${APPLICATION_NAME}.

Thanks!

Hi @jon.lieblich

Thanks for your advice. I have the SDK logs that were collected on the day this issue happened. Couldn’t attach file directly so please download them from Google drive:

Hi @yuriy.belozerov,

Thanks for providing the logs. We will investigate and let you know as soon as we have an update.

Thanks!

Hi @yuriy.belozerov,

After investigating, we have determined that this is being caused by exceeding the bandwidth limit of concurrent streams. We are working on adding an error code for this in a future release.

Thanks!

Hi @jon.lieblich. I’m working with Yuriy, so I’d like to ask some follow-up questions:
Thank you for the answer, having a proper error code would be convenient, but is there anything we can do to avoid this error, maybe there is a way to increase the allowed bandwidth for our application?
Is there a way to see our current bandwidth and detect that we should not create video elements or perform other actions?
And what should we do if we did receive this error, what are the steps we should perform to restore the normal flow and be able to create video elements?

Thank you,
Andrew Sosna.

Hi @andrew.sosna, great to meet you!

is there anything we can do to avoid this error, maybe there is a way to increase the allowed bandwidth for our application?

Unfortunately this is enforced by the back end and cannot be changed by the SDK.

Is there a way to see our current bandwidth and detect that we should not create video elements or perform other actions?
And what should we do if we did receive this error, what are the steps we should perform to restore the normal flow and be able to create video elements?

This limit only exists for simultaneous streams, so you can only add additional users after calling cleanVideoElement.

Thanks!

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