Exoplayer 2.x.x
Get the current volume:
int currentvolume = player.getVolume();
Mute: player.setVolume(0f);
Unmute: player.setVolume(currentVolume);
Exoplayer 1.x.x
I found two ways to achieve it by editing DemoPlayer
from ExoPlayer.
Good one :
Basicly, you need to get the audioTrackRenderer
which is a ExoPlayerComponent
and send message to it.
So :
Add audioRenderer
member and set it in onRenderers
:
// Complete preparation.
this.videoRenderer = renderers[TYPE_VIDEO];
this.audioRenderer = renderers[TYPE_AUDIO];
Add public method :
public void setMute(boolean toMute){
if(toMute){
player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0f);
} else {
player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 1f);
}
}
Usage :
mute : player.setMute(true);
unmute : player.setMute(false);
The other one :
This is not a good solution has the player will need to rebuffer when unmuting.
Consist of changing the audio track to an empty one:
// mute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DISABLED);
// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…