'Join Audio by Computer' disabled on joining a meeting or switching to/from a breakout room

Good afternoon!

Description
I’ve upgraded the version of Zoom’s websdk we’re using from 2.6.0 > 2.12.2 to incorporate the changes for switching to using the SDK client id/secret. We’ve found with all users so far who have tested the newer version that they see the button disabled initially with the only optin to leave and rejoin until it works.

Has anyone seen anything like this? Or have thoughts as to where to check to diagnose?

Browser Console Error

This error seems to coincide with the scenarios where the button stays disabled:

TypeError: Cannot read properties of null (reading ‘videodecodethreadnumb’)

instrument.js:109 >>>>>>>>INIT JSMEDIASDK<<<<<<<<
instrument.js:109 Unhandled Promise rejection: Cannot read properties of null (reading 'videodecodethreadnumb') ; Zone: <root> ; Task: Promise.then ; Value: TypeError: Cannot read properties of null (reading 'videodecodethreadnumb')
    at 1502_js_media.min.js:1:138245
    at g (1502_js_media.min.js:1:172370)
    at Generator._invoke (1502_js_media.min.js:1:172158)
    at e.<computed> [as next] (1502_js_media.min.js:1:172549)
    at i (1502_js_media.min.js:1:10083)
    at s (1502_js_media.min.js:1:10281)
    at 1502_js_media.min.js:1:10340
    at new ZoneAwarePromise (polyfills.js:4542:29)
    at new t (1502_js_media.min.js:1:1767)
    at 1502_js_media.min.js:1:10228
    at De (1502_js_media.min.js:1:137850)
    at Object.<anonymous> (1502_js_media.min.js:1:101199)
    at g (1502_js_media.min.js:1:172370)
    at Generator._invoke (1502_js_media.min.js:1:172158)
    at e.<computed> [as next] (1502_js_media.min.js:1:172549)
    at i (1502_js_media.min.js:1:10083)
    at s (1502_js_media.min.js:1:10281)
    at _ZoneDelegate.invoke (polyfills.js:3487:26)
    at Zone.run (polyfills.js:3249:43)
    at polyfills.js:4390:36
    at _ZoneDelegate.invokeTask (polyfills.js:3521:31)
    at Zone.runTask (polyfills.js:3293:47)
    at drainMicroTaskQueue (polyfills.js:3700:35)
    at ZoneTask.invokeTask [as invoke] (polyfills.js:3606:21)
    at invokeTask (polyfills.js:4763:18)
    at globalCallback (polyfills.js:4794:29)
    at WebSocket.globalZoneAwareCallback (polyfills.js:4827:16) TypeError: Cannot read properties of null (reading 'videodecodethreadnumb')
    at http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:138245
    at g (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:172370)
    at Generator._invoke (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:172158)
    at e.<computed> [as next] (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:172549)
    at i (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:10083)
    at s (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:10281)
    at http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:10340
    at new ZoneAwarePromise (http://localhost:4400/polyfills.js:4542:29)
    at new t (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:1767)
    at http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:10228
    at De (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:137850)
    at Object.<anonymous> (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:101199)
    at g (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:172370)
    at Generator._invoke (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:172158)
    at e.<computed> [as next] (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:172549)
    at i (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:10083)
    at s (http://localhost:4400/node_modules/@zoomus/websdk/dist/lib/av/1502_js_media.min.js:1:10281)
    at _ZoneDelegate.invoke (http://localhost:4400/polyfills.js:3487:26)
    at Zone.run (http://localhost:4400/polyfills.js:3249:43)
    at http://localhost:4400/polyfills.js:4390:36
    at _ZoneDelegate.invokeTask (http://localhost:4400/polyfills.js:3521:31)
    at Zone.runTask (http://localhost:4400/polyfills.js:3293:47)
    at drainMicroTaskQueue (http://localhost:4400/polyfills.js:3700:35)
    at ZoneTask.invokeTask [as invoke] (http://localhost:4400/polyfills.js:3606:21)
    at invokeTask (http://localhost:4400/polyfills.js:4763:18)
    at globalCallback (http://localhost:4400/polyfills.js:4794:29)
    at WebSocket.globalZoneAwareCallback (http://localhost:4400/polyfills.js:4827:16)
(anonymous) @ vendor.js:9332
api.onUnhandledError @ polyfills.js:4176
handleUnhandledRejection @ polyfills.js:4201
api.microtaskDrainDone @ polyfills.js:4195
drainMicroTaskQueue @ polyfills.js:3707
invokeTask @ polyfills.js:3606
invokeTask @ polyfills.js:4763
globalCallback @ polyfills.js:4794
globalZoneAwareCallback @ polyfills.js:4827
instrument.js:109 Support video encode hardware acceleration:  true
instrument.js:109 VP9?: true AMD?: false AMDdecodecheck: true enable720p?: true capacityfor720: true
1502_js_media.min.js:1 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'videodecodethreadnumb')
    at 1502_js_media.min.js:1:138245
    at g (1502_js_media.min.js:1:172370)
    at Generator._invoke (1502_js_media.min.js:1:172158)
    at e.<computed> [as next] (1502_js_media.min.js:1:172549)
    at i (1502_js_media.min.js:1:10083)
    at s (1502_js_media.min.js:1:10281)
    at 1502_js_media.min.js:1:10340
    at new ZoneAwarePromise (polyfills.js:4542:29)
    at new t (1502_js_media.min.js:1:1767)
    at 1502_js_media.min.js:1:10228
    at De (1502_js_media.min.js:1:137850)
    at Object.<anonymous> (1502_js_media.min.js:1:101199)
    at g (1502_js_media.min.js:1:172370)
    at Generator._invoke (1502_js_media.min.js:1:172158)
    at e.<computed> [as next] (1502_js_media.min.js:1:172549)
    at i (1502_js_media.min.js:1:10083)
    at s (1502_js_media.min.js:1:10281)
    at _ZoneDelegate.invoke (polyfills.js:3487:26)
    at Zone.run (polyfills.js:3249:43)
    at polyfills.js:4390:36
    at _ZoneDelegate.invokeTask (polyfills.js:3521:31)
    at Zone.runTask (polyfills.js:3293:47)
    at drainMicroTaskQueue (polyfills.js:3700:35)
    at ZoneTask.invokeTask [as invoke] (polyfills.js:3606:21)
    at invokeTask (polyfills.js:4763:18)
    at globalCallback (polyfills.js:4794:29)
    at WebSocket.globalZoneAwareCallback (polyfills.js:4827:16)
(anonymous) @ 1502_js_media.min.js:1
g @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
e.<computed> @ 1502_js_media.min.js:1
i @ 1502_js_media.min.js:1
s @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
ZoneAwarePromise @ polyfills.js:4542
t @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
De @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
g @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
e.<computed> @ 1502_js_media.min.js:1
i @ 1502_js_media.min.js:1
s @ 1502_js_media.min.js:1
invoke @ polyfills.js:3487
run @ polyfills.js:3249
(anonymous) @ polyfills.js:4390
invokeTask @ polyfills.js:3521
runTask @ polyfills.js:3293
drainMicroTaskQueue @ polyfills.js:3700
invokeTask @ polyfills.js:3606
invokeTask @ polyfills.js:4763
globalCallback @ polyfills.js:4794
globalZoneAwareCallback @ polyfills.js:4827
Promise.then (async)
nativeScheduleMicroTask @ polyfills.js:3676
scheduleMicroTask @ polyfills.js:3687
scheduleTask @ polyfills.js:3511
scheduleTask @ polyfills.js:3336
scheduleMicroTask @ polyfills.js:3356
scheduleResolveOrReject @ polyfills.js:4380
resolvePromise @ polyfills.js:4317
(anonymous) @ polyfills.js:4233
Promise.then (async)
(anonymous) @ polyfills.js:4611
ZoneAwarePromise @ polyfills.js:4542
Ctor.then @ polyfills.js:4610
resolvePromise @ polyfills.js:4284
(anonymous) @ polyfills.js:4233
e.exports @ 1502_js_media.min.js:1
resolve @ 1502_js_media.min.js:1
i @ 1502_js_media.min.js:1
s @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
ZoneAwarePromise @ polyfills.js:4542
t @ 1502_js_media.min.js:1
(anonymous) @ 1502_js_media.min.js:1
W.IsSupportVideoDecodeHardwareAcceleration @ 1502_js_media.min.js:1
(anonymous) @ vendor.js:173498
value @ vendor.js:173574
value @ vendor.js:61082
commitLifeCycles @ vendor.js:332633
commitLayoutEffects @ vendor.js:335583
callCallback @ vendor.js:313090
sentryWrapped @ vendor.js:1064
invokeTask @ polyfills.js:3521
runTask @ polyfills.js:3293
invokeTask @ polyfills.js:3602
invokeTask @ polyfills.js:4763
globalCallback @ polyfills.js:4794
globalZoneAwareCallback @ polyfills.js:4827
invokeGuardedCallbackDev @ vendor.js:313139
invokeGuardedCallback @ vendor.js:313192
commitRootImpl @ vendor.js:335325
unstable_runWithPriority @ vendor.js:346560
runWithPriority$1 @ vendor.js:323994
commitRoot @ vendor.js:335167
finishSyncRender @ vendor.js:334584
performSyncWorkOnRoot @ vendor.js:334570
(anonymous) @ vendor.js:324048
unstable_runWithPriority @ vendor.js:346560
runWithPriority$1 @ vendor.js:323994
flushSyncCallbackQueueImpl @ vendor.js:324043
flushSyncCallbackQueue @ vendor.js:324031
batchedUpdates$1 @ vendor.js:334640
notify @ vendor.js:260378
n.notifyNestedSubs @ vendor.js:260363
n.handleChangeWrapper @ vendor.js:260365
dispatch @ vendor.js:340282
(anonymous) @ vendor.js:339754
dispatch @ vendor.js:339824
Qt @ vendor.js:56196
(anonymous) @ vendor.js:59909
(anonymous) @ vendor.js:339751
Wt @ vendor.js:181441
handleOnMessage @ vendor.js:181471
i.<computed>.i.<computed>.onmessage @ vendor.js:181509
wrapFn @ polyfills.js:3881
sentryWrapped @ vendor.js:1064
invokeTask @ polyfills.js:3521
runTask @ polyfills.js:3293
invokeTask @ polyfills.js:3602
invokeTask @ polyfills.js:4763
globalCallback @ polyfills.js:4794
globalZoneAwareCallback @ polyfills.js:4827

Which Web Meeting SDK version?
2.12.2 but I’ve also tried 2.10.0

Meeting SDK Code Snippets

The main code handling initiation of the SDK are here:

  private startMeeting(): void {
    ZoomMtg.preLoadWasm();
    ZoomMtg.prepareWebSDK();

    const root = document.getElementById('zmmtg-root');

    if (root) {
      root.style.display = 'block';
    }

    this.initialiseZoom();
  }

  private initialiseZoom(): void {
    ZoomMtg.init({
      debug: true,
      leaveUrl: `${this.windowRef.location.origin}/login`,
      success: (success: any) => {
        this.logger.log(success);

        ZoomMtg.join({
          sdkKey: this.config.integrationKey,
          meetingNumber: this.config.meetingNumber,
          passWord: this.config.passWord,
          signature: this.config.signature,
          userEmail: this.config.userEmail,
          userName: this.config.userName,

          success: (s: any) => {
            this.logger.log(s);
          },
          error: (error: any) => {
            this.logger.log(JSON.stringify(error));
          }
        });
      },
      error: (error: any) => {
        this.logger.log(JSON.stringify(error));
      }
    });
  }

To Reproduce(If applicable)
Steps to reproduce the behavior:

  1. Join meeting
  2. On the preview, leave as default
  3. On joining, the Join Audio panel appears, the button is disabled
  4. Leave meeting, rejoin with steps 1 & 2 and the button is enabled (sometimes)

Alternatively

  1. Join meeting via above steps and if the button is enabled (and allow connecting sound sources)
  2. Get host to add breakout rooms
  3. Join a breakout room
  4. Audio panel appears with disabled button

Screenshots

Troubleshooting Routes
As the moment it’s consistently breaking when I change to a breakout room and inconsistently on joining

Device (please complete the following information):

  • Device: Macbook Pro
  • OS: 13.2.1
  • Browser: Chrome
  • Browser Version 113.0.5672.126

Additional context
Add any other context about the problem here.

At the moment I’m at a bit of a loss as to why this might be happening so any insight would be appreciated.

I can’t edit the above so I’ll add some extra context here:

Since initially raising this I’ve gone back and stepped through each iteration from 2.7.0 and found that the error starts to manifest from 2.11.5. Looking at the changelog for that version it does talk about a few video/audio fixes or enhancements (which could be a coincidence).

We host our Zoom integration inside a mini app that we iframe into our main platform. I know it’s not the recommended way, but I know we’re not unique in requiring it to be embedded this way either. However; worth knowing this detail if it helps with analysis.

Worth noting by the way, in your Best practices when using the Meeting SDK in an iFrame guide it would be helpful to include a list of known required permissions. I did notice that the latest SDK required screen-wake-lock, plus for a while it’s required display-capture to allow screensharing.

Hi, I’m facing the same problem after updating the Web SDK to version 2.12.2

  • Device: Macbook Pro M1
  • OS: 12.6
  • Browser: Chrome
  • Browser Version 113.0.5672.126

I tested it on Safari and Firefox and the problem does not occur, it seems that we have something specific for Chrome.

Safari version: 16.4.1
Firefox version: 113.0.2

I need an urgent fix, we have thousands of users facing this issue.

1 Like

@alisson I have downgraded us to 2.11.0 which seems to be ok as an interim fix. If you don’t have to rely on features from the later versions then perhaps you could test that for your situation?

@mijodu it seems that in version 2.11.0 the issue of audio not connected in Chrome does not occur. I’ll try to use that version for now. Thanks

in the error log are

  • vendor.js
  • polyfills.js

are mentioned, these are not files from the zoom SDK

do you use a javascript framework (Angular, React, Vue … ) ?

which version in detail?

Same issue here:
We use Angular though in our site here are more logs: ZoomSDK client issue - Google Drive

to see if the mac problem

  • is due to the zoom SDK
  • or the integration of the zoom SDK

you should do a short test with the meeting SDK example on github (-> CDN version)

the CDN version is ready to use within few simple steps

CDN/js/index.js:20 var CLIENT_ID = "YOUR_CLIENT_ID_OR_SDK_KEY";;
CDN/js/index.js:26 var CLIENT_SECRET = "YOUR_CLIENT_SECRET_OR_SDK_SECRET;
CDN/js/index.js:112 ... "/meeting.html?" // replace '/' with './'

do you see in this version the enable button problem with the Mac ?

Hi @mijodu !

I downgraded to version 2.11.0 but started having issues with User Audio being disconnected after 3 or 4 seconds, on any device (Android, iOS, Desktop). I updated the version to 2.12.2 again and advised all users not to use Chrome or if they do, reload the page after the host accepts it, which works this way.

all users not to use Chrome

are you sure about the problem with Chrome on iOS ?

Chrome is using on iOS/iPadOS Safari WebKit - not Chrome Blink

@j.schoenemeyer Yes, we have a huge amount of users, most use Chrome and this problem I mentioned occurs. We’ve tested it in other browsers and it doesn’t happen.

It only occurs right after the user is accepted by the host. If the host puts the user in the waiting room and accepts again, the problem occurs the same way.

Adding audio only works as follows:

  • User has been accepted by the host
  • Unable to add the audio by clicking the button
  • Reload the call page
  • The add audio button works

On iOS I’m not sure if it happens on other browsers. On Windows/Mac and Android, it takes place in Chrome. On iOS WebKit is used, maybe it happens on all browsers.

And I just discovered another bug.

SDK version: 2.12.2
iOS: 16.2
Browser: Safari (I haven’t tested the others but it should be the same)

When connecting audio, wait 3 or 4 seconds, audio will disconnect by itself. This behavior loops and has no way of being usable.

How do I report to Zoom?

what happens if you try the non SDK web version on zoom.us (this version is about 6 weeks ahead)

invite link → Popup “Allow this site to open …” → Cancel → Join from your browser

All points were checked over and over again. There were no problems, I repeat, no problems with audio in the websdk when I was using version 2.6.0. When we migrate to 2.12.2 the problems occur.

Support has told us to discuss the matter on the dev forum, so this is where we need to address it. For me, this is a bug in version 2.12.2, because in version 2.6.0 this problem did not occur.

we are having the same issues
the client view SDK is unusable for all browsers

looks like this is happening on the @zoomus/websdk 2.12.x

https://source.zoom.us/2.12.0/lib/av/1502_js_media.min.js

Cannot read properties of null (reading 'videodecodethreadnumb')

to resolve this issue, for now we’ve downgraded to 2.10 version which works as intended

sure this is related…

And feel like our request just gets swept under the carpet… : ) :wink:

Im really not making this up… i have given so many screenshots… but still in the dark…

Yes, we are reporting with all the details the problem that occurs. Here, our platform is an EAD, so we are having an average of 200 reports per day with this problem of the audio being disconnected and the participants not hearing the host. It’s complicated, we need a fix, it’s a bug already described by more than 1 person.

1 Like

@tommy an you look together with all of us for the problem of the audio being continuously disconnected on mobile devices? We need urgent help/fix for this.

Hello,

retested today using version 2.13.0 recently released and Google Chrome issue of audio not connecting after user is accepted by host in waiting room continues.

Below is a print of the console with the error that occurs.

The participant can only connect to the audio if the page is reloaded, where the user enters directly (it no longer needs to be accepted by the host

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