Audio mixing and sound effects
Voice SDK makes it simple for you to publish audio captured through the microphone to subscribers in a channel. In some real-time audio and video scenarios, such as games or karaoke, you need to play sound effects or mix in music files to enhance the atmosphere and add interest. Voice SDK enables you to add sound effects and mix in pre-recorded audio.
This page shows you how to implement audio mixing and playing sound effects in your app.
Understand the tech
Voice SDK provides APIs that enable you to implement:
-
Audio mixing
Mix in music file such as background music with microphone audio. Using this feature, you can play only one file at a time.
-
Sound effects
Play audios with a short duration. For example, applause, cheers, or gunshots. You can play multiple sound effects at the same time.
Prerequisites
Ensure that you have:
- Implemented the SDK quickstart in your project.
-
Audio files in one of the supported formats.
-
Added the required permission to your project
If your project's
targetSdkVersion
is greater than 20, add the following code to theAndroidManifest.xml
file:
Play sound effects and music
This section shows you how to implement playing sound effects and add audio mixing in your app.
To manage audio mixing and sound effects, Video SDK provides the following APIs:
Function | Sound effect | Audio mixing |
---|---|---|
Play or stop playing a specific audio file | preloadEffect unloadEffect playEffect stopEffect stopAllEffects | startAudioMixing stopAudioMixing |
Pause or resume playing an audio file | pauseEffect pauseAllEffects resumeEffect resumeAllEffects | pauseAudioMixing resumeAudioMixing |
Get and adjust playback position and volume | setEffectPosition getEffectCurrentPosition getEffectsVolume setEffectsVolume setVolumeOfEffect | getAudioMixingCurrentPosition setAudioMixingPosition getAudioMixingPublishVolume adjustAudioMixingPublishVolume getAudioMixingPlayoutVolume adjustAudioMixingPlayoutVolume |
Report playback status of audio files | onAudioEffectFinished | onAudioMixingStateChanged |
Set up file access permissions
For Android projects with targetSdkVersion
greater than or equal to 20, add the following to the project's AndroidManifest.xml
file:
Play sound effects
To play sound effects, refer to the following code example:
Incorporate audio mixing
Before or after joining a channel, call startAudioMixing
to play the audio file. When the audio mixing status changes, the SDK triggers the onAudioMixingStateChanged
callback and reports the reason for the change.
To mix in an audio file, refer to the following code example:
Control playback using the following methods:
pauseAudioMixing
: Pause playback.resumeAudioMixing
: Resume playback.stopAudioMixing
: Stop playing.setAudioMixingPosition
: Set the playing position of the current audio file.adjustAudioMixingPlayoutVolume
: Adjust the volume of the current audio file played locally.adjustAudioMixingPublishVolume
: Adjust the volume of the current audio file played at the remote end.
If you play a short sound effect file using startAudioMixing
, or a long music file using playEffect
, the playback may fail.
Reference
This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.
FAQs
Sample project
Agora provides an open source Play Audio Files project on GitHub for your reference. Download or view the source code for a more detailed example.