Sporadic Video Connections Not Being Established

We have used the Zoom Video SDK for Web (1.6.2) to embed zoom meetings into our application. Participants are joined into a meeting room automatically with audio and video enabled however sometimes the video link is never established or it is established in a single direction. For example, participant 1 can see participant 2, but not the other way around.

Audio always works and both participants can hear one another.

We get no errors reported and if we check the meetings in our Zoom Dashboard we see no errors or data under the “receiving” and “sending” columns.

Does anyone else face a similar issue?

1 Like

Still facing this issue.

This just happened to our application and due to the errors our client had to scrap there attempt at the meetings. In it’s current state, our application is inoperable.

We get no errors are reported and if we check the meetings in our Zoom Dashboard we see no errors or data under the “receiving” and “sending” columns. We see that there is zero data in the video columns. And no data in the receiving audio column. Even though during that time we see a different user. However clicking on his name only shows data in the receiving audio column.

Why were theses two users never connected via video link? Why was audio not working bi-directional? Why is the Zoom Video SDK not working correctly?

Without changing any of our code we can see some users connected successfully. For example, looking at a different meeting we see users connected to a meeting and has data send/recieved for audio and video. His connection was seemingly okay.

These two users connected from the same IP. So same code, same IP same network yet one worked and one didn’t.

At this point the Zoom Video SDK won’t work for our application. Does anyone have any alternative recommendations?

@devs2

I’m assuming you are using Video SDK for Web, and it is embedded into a web application

1 thing to take note is the guide on embedding this Web SDK on iframe

Video SDK for Web requires the developer to handle the events and video displays.
Example, when a user joins an existing video session

  • user event handler to get user’s id
  • display joined user’s video

If you are seeing intermittent issues on the same code base but different behavior across users, you might need to take a look at the camera and microphone permissions, and the browser versions as well.

Hi Chun, thanks for the reply.

Yes, we are using the Video SDK and yes it is embedded into a web application that is accessed via the users browsers.

We are not implementing via an iFrame and we are handling the events and video displays as it sometimes works.

If you have access to the zoom backend, I can give you some meeting IDs and user UUIDs to look up to see what I am referring to when I say some connections work and others do not.

@chunsiong.zoom We’ve found some more to our issue. It seems that when the video display is attempting to render the self video to a video element it doesn’t work. For example, following code from the docs:

// if Desktop Chrome, Edge, and Firefox with SharedArrayBuffer not enabled, Android browsers, and on devices with less than 4 logical processors available
if(stream.isRenderSelfViewWithVideoElement()) {
   // start video - video will render automatically on HTML Video element
   stream.startVideo({ videoElement: document.querySelector('#my-self-view-video') }).then(() => {
      // show HTML Video element in DOM
      document.querySelector('#my-self-view-video').style.display = 'block'
   }).catch((error) => {
     console.log(error)
   })
// desktop Chrome, Edge, and Firefox with SharedArrayBuffer enabled, and all other browsers
} else {
   // start video
   stream.startVideo().then(() => {
      // render video on HTML Canvas element
      stream.renderVideo(document.querySelector('#my-self-view-canvas'), client.getCurrentUserInfo().userId, 1920, 1080, 0, 0, 2).then(() => {
         // show HTML Canvas element in DOM
         document.querySelector('#my-self-view-canvas').style.display = 'block'
      }).catch((error) => {
         console.log(error)
      })
   }).catch((error) => {
      console.log(error)
   })
}

If we change it so the user always falls into the first if statement, and their self video is rendered to a video element, we can reproduce the problem - sort of: if(stream.isRenderSelfViewWithVideoElement() || 1) {

We get no errors in the console, the video camera turns on however the self video is never rendered to the element on the page. Nor is the microphone enabled. If we join another user into the same session they can see each other and hear each other but they cannot see themselves.

Sometimes we also get an error “OPERATION_TIMEOUT” (error.type = OPERATION_TIMEOUT; error.reason = undefined) on the .catch(error => { for the stream.startAudio() function call.

While these aren’t our exact issues, they do seem related.

@devs2 ,

For start audio, it should be triggered by a user’s action, instead of automatically via code.

You might find some of these code sample useful for specific scenario

Hi @chunsiong.zoom. Thanks for the reply.

Indeed we were able to consistently reproduce the OPERATION_TIMEOUT error in regards to audio starting.

Our application requires complete automation. Zero user interaction aside from logging in and selecting which session. After that the user is automatically cycled through meeting rooms. We cannot have user interaction to start audio or video.

During our testing we found if we roll back to version 1.6.2 of the SDK then the audio OPERATION_TIMEOUT issue isn’t present.

What changed between 1.6.2 and above that would effect this behaviour? We’ve checked the changelog and see no mention of this changed behaviour.

Note that this doesn’t fully fix our issue of two meeting participants connecting to one another. We are still seeing that problem.

@devs2 ,

This is a privacy design, audio should be started by a user’s action and not via automatically.

@chunsiong.zoom That’s disappointing and makes it impossible for us to update the SDK.

We are using the Video SDK for Web. Do any of the other SDK’s offered by zoom have this limitation removed so we can automate the entire connection and disconnection process? Either any of the variations of the Video SDK or even the Meeting SDK?

@devs2

You might be able to try this solution here

However there is a possibility that this might be blocked by browser’s microphone permission.

Hi @chunsiong.zoom. Thanks for the link for our audio timeout issue. I will follow up in that thread.

It isn’t a permission issue, we have granted and checked “remember” for all permissions. Also if we catch that timeout error and run a “disconnect and reconnect” (without user interaction) it often works correctly the second time. It just takes 30-40 seconds to connect when that happens which is unacceptable for our application.

Do any of the other SDK’s offered by zoom have this limitation removed so we can automate the entire connection and disconnection process? Either any of the variations of the Video SDK or even the Meeting SDK?

@devs2 , could you share addition information about your use case / user scenario?

@chunsiong.zoom Here’s some more detail about our web application:

We are developing an application that uses the Zoom Video SDK for Web to facilitate video conferencing between multiple parties that rotate through pre-determined rooms. That being users don’t manually join or leave rooms but rather they are forced into and out of rooms programmatically and in sync. Users are moved from room to room at regular intervals. A users flow in our application would be similar to the following:

  1. user logs in (User A)
  2. “user a” is presented with a list of sessions
  3. clicking on a session will join them (“user a”) to said session and they will then wait for the session to start
  4. when the session starts a socket connection sends a command to “user a” to join the first room
  5. upon joining the room they are to be connected via audio/video to another user (“user b”) that is already connected to that room; a timer also starts at the same time
  6. when the timer reaches zero “user a” leaves the room and move to another room
  7. they then connect to this next room with audio/video to a user that’s already in the room (“user c”); again another timer is started
  8. once the second timer reaches zero “user a” leaves room 2 and disconnects and moves to the next room
  9. this process repeats for all users until they’ve rotated through each room

The system needs to be entirely automatic and therefore they should have no control over their microphone or camera. It needs to automatically enable and disable as they “rotate” around the session rooms.

Yesterday we ran a session and again we had users join their room and while audio worked the video connection did not and the two users in the room couldn’t see one another. The self camera worked as they could see themselves, but other then that they could only hear one another. There were no errors logged.

So audio timeout issue aside, this “sporadic video connections not being established” is still an issue for us.

@devs2

are you able to enable tracking for your video SDK project? This is supported on version 1.8.5 and later.

I’m thinking maybe creating a button. If those sporadic users are having issue, have them click on the “report issue” button, which will send the telemetry over to zoom by calling
clientSideTelemetry.reportToGlobalTracing()

Do also let me know your telemetry_tracking_id

@chunsiong.zoom That isn’t possible since we are locked to version 1.6.2 due to the audio OPERATION_TIMEOUT issue. Please see here: Sporadic Video Connections Not Being Established - #7 by devs2

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