问题
I'm using Google new MediaPlayer named ExoPlayer and cannot find a way to mute the sound
Is there an easy way to mute audio track on Google ExoPlayer ? Or changing volume ?
回答1:
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 inonRenderers
:// 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);
回答2:
The new way to mute and unmute volume as of version 2.3.1 can be done as follows:
int currentvolume = player.getVolume();
make sure to call the line above after starting the player otherwise you will get a nullpointerexception
to mute volume:
player.setVolume(0f);
to unmute volume:
player.setVolume(currentVolume);
回答3:
try
player.setSelectedTrack(DemoPlayer.TYPE_AUDIO, DemoPlayer.TRACK_DISABLED);
analogous to this line of code
回答4:
Just simply use player.setVolume(0) will silent the video.
回答5:
I will recommend get the current volume first and then mute it. When you will unmute you can give user same volume.
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
回答6:
In ExoPlayer 2.x.x:
get the current volume:
int currentVolume = player..getAudioComponent().getVolume();
mute:
player.getAudioComponent().setVolume(0f);
unmute:
player.getAudioComponent().setVolume(currentVolume);
来源:https://stackoverflow.com/questions/27404446/mute-audio-on-exoplayer