Safari Audio Distorted Not Functional

Format Your New Topic as Follows:

Video SDK Type and Version
Zoom Video SDK 1.11.5

Description
Safari Desktop users reporting garbled/robotic/choppy audio

Error?
Safari Desktop users reporting garbled/robotic/choppy audio

Troubleshooting Routes
attemped to turn on audio_compatible_mode but that wouldn’t work for me ( running without cross origin isolated so maybe thats why )

How To Reproduce

  1. Join session on Safari desktop

Session ids:
kzraO4hHSjeEmmRkSdvU5g==
Gq8/09eUTqOznSwv9iqScQ==

Hey @sam9

Thanks for your feedback.

kzraO4hHSjeEmmRkSdvU5g==
Gq8/09eUTqOznSwv9iqScQ==

After investigating the session logs, we found that WebRTC audio is not enabled. Could you please check the JWT token again?

attemped to turn on audio_compatible_mode but that wouldn’t work for me ( running without cross origin isolated so maybe thats why )

It is not affected by SharedArrayBuffer, and you can enable it without cross-origin isolation.

Thanks.
Vic

@vic.yang Thanks… it wasn’t working because when I originally tried audio_compatible_mode the mediaSdkChange wasn’t firing “audio” type on Safari but it was firing “share” so I just added “share” for now to accept that as audio encode/decode on safari ready:

onMediaSdkChange = async (payload: MediaSDKEncDecPayload) => {
        if (
            (payload.type === "audio" || payload.type === "share") &&
            payload.result === "success"
        ) {
            if (payload.action === "encode") {
                // encode for sending audio stream (speak)
                this.audioEncode = true;
            } else if (payload.action === "decode") {
                // decode for receiving audio stream (hear)
                this.audioDecode = true;
            }
        }

        if (this.isSafari() && this.audioEncode && this.audioDecode) {
            const { videoRoom } = this.getStateSnapshot();

            videoRoom.off("media-sdk-change", this.onMediaSdkChange);

            this.audioEncode = false;
            this.audioDecode = false;

            this.showSafariAudioPrompt();
        }
    };

1 follow up questions if you could since I am going to push this into production today I think:

Is it okay to only set audio_compatible_mode for Safari users and non-Safari run without that turned on?

Let me know if theres any other things I need to know about

Hey @sam9

Thank you very much for sharing your concerns about usage.

The media-sdk-change was initially introduced to address issues with legacy Safari. We apologize for the delay in updating our documentation. Subsequently, we have introduced a new audio solution (WebRTC audio , enabled via audio_compatible_mode field in JWT token), which does not have these issues and eliminates the need to listen for the media-sdk-change event.

Is it okay to only set audio_compatible_mode for Safari users and non-Safari run without that turned on?

Yes. It’s Okay for the setting.

Thanks
Vic