Manage media and devices
Updated
Implement key workflow steps required to develop a fully functional video calling app
This page shows you how to configure volume settings for audio recording, audio playback, and for the playback of music files.
Understand the tech
Agora RTC SDK supports adjusting the audio volume for both recording and playback to meet practical application use-cases. For example, during a two-person call, you can mute a remote user by adjusting the playback volume setting to 0.
The figure below shows the workflow of adjusting the volume.
Playback refers to transmitting an audio signal from a sender to a recipient, where it is played back through a playback device.
In-ear monitoring refers to the process of playing audio captured by a device.
Recording refers to the process in which audio signals are captured by a recording device and then sent to the transmitter.
Caution
If you set the volume too high using the signal volume adjustment methods, it may lead to audio distortion on some devices.
Prerequisites
Ensure that you have implemented the SDK quickstart in your project.
Implement volume control
Use one or more of the following volume control methods to adjust volume settings.
Mute and unmute users
-
To mute or unmute the local audio stream, call
muteLocalAudioStream:[agoraKit muteLocalAudioStream:YES];// Stop publishing the local audio stream agoraKit.muteLocalAudioStream(true) // Resume publishing the local audio stream agoraKit.muteLocalAudioStream(false) -
To mute or unmute a remote user, call
muteRemoteAudioStreamwith theuidof the remote user:[agoraKit muteRemoteAudioStream:remoteUid mute:YES];// Stop subscribing to the audio stream of the remote user agoraKit.muteRemoteAudioStream(remoteUid, mute: true) // Resume subscribing to the audio stream of the remote user agoraKit.muteRemoteAudioStream(remoteUid, mute: false)
To mute remote users without unsubscribing, set their playback volume to 0.
Adjust the playback volume
Call adjustPlaybackSignalVolume or adjustUserPlaybackSignalVolume to adjust the volume of the audio playback signal.
// Set the volume of all remote users played locally
[agoraKit adjustPlaybackSignalVolume: 50];
// Set the local playback volume for a specific remote user.
[agoraKit adjustUserPlaybackSignalVolume: uid, volume: 50];// Set the volume of all remote users played locally
agoraKit.adjustPlaybackSignalVolume(50)
// Set the local playback volume for a specific remote user
agoraKit.adjustUserPlaybackSignalVolume(uid, volume: 50)Adjust the in-ear monitoring volume
During the process of audio capture, mixing, and playback, Agora enables you to adjust the volume of in-ear monitoring. Enable and set the in-ear monitoring through enableInEarMonitoring and setInEarMonitoringVolume.
// Enable in-ear monitoring
[agoraKit enableInEarMonitoring:true];
// Adjust in-ear monitoring volume
[agoraKit setInEarMonitoringVolume:50];// Enable in-ear monitoring
agoraKit.enableInEarMonitoring(true)
// Adjust in-ear monitoring volume
agoraKit.setInEarMonitoringVolume(50)Adjust the recording volume
Call adjustRecordingSignalVolume to adjust the volume of the audio recording signal.
// Adjust the recording signal volume
[agoraKit adjustRecordingSignalVolume: 50];// Adjust the recording signal volume
agoraKit.adjustRecordingSignalVolume(50)When configuring audio settings, it's essential to understand the default behavior and the options available. Here are the key points to keep in mind:
- The SDK defaults to a device volume of
85when using the recording device to capture audio signals. - A volume of
0means mute, and a volume of255represents the maximum volume of the device. - If the SDK detects that the recording volume is too low in the current environment, it automatically increases the volume of the recording device.
- The volume of the recording device directly influences the global volume of the device.
- If the default recording device volume does not meet your requirements, adjust it by regulating the signal amplitude captured by the microphone or sound card.
Get volume information of users
RTC SDK enables you to obtain the user IDs and corresponding volumes of the three users with the highest instantaneous volumes in a channel during the process of audio recording, mixing, and playback. You use reportAudioVolumeIndicationOfSpeakers callback to obtain this information. A returned uid of 0 in the callback indicates the local user.
Note
Call enableAudioVolumeIndication to enable reporting of the users' volume in the callback.
// Retrieve the user IDs of the three users with the highest instantaneous speaking volume,
// their respective volumes, and determine whether the local user is speaking.
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine
reportAudioVolumeIndicationOfSpeakers:(NSArray<AgoraRtcAudioVolumeInfo *> *_Nonnull)speakers
totalVolume:(NSInteger)totalVolume {
}// Retrieve the user IDs of the three users with the highest instantaneous speaking volume,
// their respective volumes, and determine whether the local user is speaking.
func rtcEngine(
_ engine: AgoraRtcEngineKit,
reportAudioVolumeIndicationOfSpeakers speakers: [AgoraRtcAudioVolumeInfo],
totalVolume: Int
) {
}
// Enable the reportAudioVolumeIndicationOfSpeakers callback
agoraKit.enableAudioVolumeIndication(200, smooth: 3, reportVad: true)Reference
This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.
API reference
adjustRecordingSignalVolumeadjustPlaybackSignalVolumeadjustUserPlaybackSignalVolumeadjustAudioMixingPlayoutVolumeenableInEarMonitoringsetInEarMonitoringVolumeenableaudiovolumeindicationmuteLocalAudioStreammuteRemoteAudioStream
Sample projects
Agora offers the following open-source sample project for adjusting recording, playback, and in-ear monitoring volumes for your reference:
- GitHub: JoinChannelAudio
For adjusting the playback volume of mixing or audio effect files, refer to the following sample project:
- GitHub: AudioMixing
