Best practices
These recommendations help you ship a reliable audio experience with the Video SDK for Windows.
Select the right audio devices
On Windows, the SDK captures and plays back through the system audio devices exposed by Windows (WASAPI). On machines with more than one device, don't assume the default is correct.
- Enumerate devices with
getMicListandgetSpeakerListand let the user choose, or select a known device by ID. For details, see Select a microphone or speaker. - Confirm at least one capture device is present before calling
startAudio. A server with no audio hardware has no devices to select.
Enable audio with a clear action
If your app has a user interface, tie the call to startAudio to a visible, user-initiated action like a "Join audio" or microphone button. This makes it easy for users to understand when they're connected to session audio.
Show mute and talking status
- Render each user's mute state from their
ZoomVideoSDKAudioStatusso participants can see at a glance who is muted. ImplementonUserAudioStatusChangedand re-render when it fires. - Drive a talking indicator from the
onUserActiveAudioChangedcallback together with theisTalkingfield. This gives users confirmation that their mic is capturing their voice.
Server and headless deployments
Some Video SDK for Windows apps run without a user present, for example a bot or recorder deployed to a Windows Server host.
- If the host has no physical audio hardware, work through raw audio instead of system devices.
- To inject your own audio into the session without a capture device, provide a virtual audio source rather than calling
startAudioagainst hardware. For details, see Send raw data. - To consume session audio for transcription or recording, subscribe to raw audio rather than routing it to a speaker.
Sound options
Leave original sound disabled unless your use case specifically needs unprocessed audio. The SDK's default audio processing (echo cancellation, noise suppression) produces a better experience for general voice communication. Enable original sound for music, broadcasting, or other content where the SDK's processing would degrade the source.
Handle host-ask-unmute on the client
When the host calls unMuteAudio on a remote user, the target device receives onHostAskUnmute. Always show the user a confirmation prompt; never silently turn on their microphone. Calling unMuteAudio on the local user without the user's explicit acknowledgment violates the user's expectation of mic privacy.