J'utilise Google nouveau MediaPlayer nommé ExoPlayer et ne trouve pas de moyen de couper le son
Existe-t-il un moyen simple de couper le son d'une piste audio sur Google ExoPlayer? Ou changer le volume?
Obtenez le volume actuel: int currentvolume = player.getVolume();
Muet: player.setVolume(0f);
Réactiver le son: player.setVolume(currentVolume);
J'ai trouvé deux façons d'y parvenir en éditant DemoPlayer
depuis ExoPlayer.
Fondamentalement, vous devez obtenir le audioTrackRenderer
qui est un ExoPlayerComponent
et lui envoyer un message. Alors :
Ajoutez un membre audioRenderer
et définissez-le dans onRenderers
:
// Complete preparation.
this.videoRenderer = renderers[TYPE_VIDEO];
this.audioRenderer = renderers[TYPE_AUDIO];
Ajouter une méthode publique:
public void setMute(boolean toMute){
if(toMute){
player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0f);
} else {
player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 1f);
}
}
Utilisation:
muet: player.setMute(true);
réactiver le son: player.setMute(false);
Ce n'est pas une bonne solution si le joueur devra rebuffer lorsqu'il sera réactivé.
Consiste à remplacer la piste audio par une piste vide:
// mute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DISABLED);
// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
La nouvelle façon de couper et réactiver le volume à partir de la version 2.3.1 peut être effectuée comme suit:
int currentvolume = player.getVolume();
assurez-vous d'appeler la ligne ci-dessus après avoir démarré le lecteur, sinon vous obtiendrez une exception nullpointerexception
pour couper le volume:
player.setVolume(0f);
pour réactiver le volume:
player.setVolume(currentVolume);
Je recommanderai d'abord d'obtenir le volume actuel, puis de le couper. Lorsque vous réactivez le son, vous pouvez attribuer le même volume à l'utilisateur.
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
essayer
player.setSelectedTrack(DemoPlayer.TYPE_AUDIO, DemoPlayer.TRACK_DISABLED);
analogue à cette ligne de code
Utilisez simplement player.setVolume (0) pour désactiver la vidéo.
Dans ExoPlayer 2.x.x:
obtenir le volume actuel:
int currentVolume = player..getAudioComponent().getVolume();
muet:
player.getAudioComponent().setVolume(0f);
réactiver:
player.getAudioComponent().setVolume(currentVolume);