Summary
We encountered a reproducible issue where a single participant’s audio stream was never established with Zoom’s media server for the entire duration of a session (~31 minutes), even though the participant was actively speaking and could be heard by others in the meeting.
Environment
-
SDK: Zoom Meeting SDK for Web
-
Version: 5.0.0
-
Mode: Client View (recording bot)
Observed Behavior
We run a recording bot using the Web Meeting SDK. During a group discussion, the following was observed for one specific participant out of six:
-
The participant appeared in the attendee list (
onUserJoinfired normally) -
The participant was confirmed to be actively speaking by other participants in the meeting
-
No
onActiveSpeakerevents were fired for this participant during the entire ~31-minute session -
The participant’s
audiofield ingetAttendeeslistremainednullat join time, then changed to""(empty string) — unlike all other participants, whoseaudiofield changed to"computer"within seconds of joining -
No
onUserUpdateevents were received for this participant at any point -
At the exact moment the session state changed later in the meeting, the participant’s
audiofield changed to"computer"in the nextgetAttendeeslistcall -
All other participants in the same meeting behaved normally (hundreds of
onActiveSpeakerevents were received for each of them)
Timeline from Logs
| Time (UTC) | Event | audio field | Note |
|---|---|---|---|
| 06:05:29–06:05:34 | Other participants join | null → "computer" within 1–4s |
Normal |
| 06:05:38 | Target participant joins (onUserJoin) |
null |
Normal initial state |
| 06:05:38 | getAttendeeslist |
null |
Others already "computer" |
| 06:05:48 | getAttendeeslist |
"" (empty string) |
Unique value — not seen for others |
| 06:05:38–06:36:26 | Entire session | — | onActiveSpeaker: 0 events |
| 06:36:26 | Later in the meeting, getAttendeeslist |
"computer" |
Audio established only at this point |
Note: Another participant joined at 06:05:48 with audio: null (same initial state) and was detected by onActiveSpeaker within 8 seconds, which suggests that the initial null value itself is not the issue.
Key Observations
audio: "" (empty string)
This value was unique to the affected participant. All others showed either "computer" (audio joined) or null (initial/transient state).
We are unsure what this empty string represents in the SDK. Does it indicate a failed or partial Join Audio attempt?
No onActiveSpeaker events
The participant was confirmed to be speaking by others, but Zoom’s media server never detected their audio stream.
This suggests the audio stream may never have been successfully established on Zoom’s side, rather than this being a simple client-side mute issue.
No onUserUpdate events
We received no state change events for this participant throughout the session.
If Join Audio had failed and then later recovered, we would normally expect at least one onUserUpdate event.
Audio established only later in the meeting
The audio: "computer" value appeared in getAttendeeslist only much later in the session.
This suggests Join Audio may have silently failed initially and only recovered later, without any explicit SDK event indicating the transition.
Questions
-
What does
audio: ""(empty string) mean ingetAttendeeslist?
Is it different fromnull? Does it indicate a failed Join Audio attempt? -
Is there any known issue where Join Audio can silently fail after a participant joins a meeting?
Especially in cases where the participant is visible in the attendee list, but no audio stream is ever established on the media server side. -
Is there any way to programmatically detect that a participant’s audio stream has not been established and trigger a re-join or recovery flow from the SDK side?
Impact
This caused a participant to be absent from the recording despite actively participating in the discussion.
The issue is difficult to detect in real time because the participant still appears in the attendee list and no errors are thrown.
We are currently using SDK v5.0.0 and plan to upgrade to v5.1.2 (for the PEPC fix related to Chrome/Edge v144).
We would appreciate any guidance on whether this is a known issue and whether there is a recommended workaround.