simpleexoplayer roku extension example android exoplayer

android - roku - fmp4 exoplayer



Silenciar audio en ExoPlayer (5)

Estoy usando el nuevo MediaPlayer de Google llamado ExoPlayer y no puedo encontrar una manera de silenciar el sonido

¿Hay una manera fácil de silenciar la pista de audio en Google ExoPlayer? ¿O cambiando de volumen?


La nueva forma de silenciar y activar el volumen a partir de la versión 2.3.1 se puede hacer de la siguiente manera:

int currentvolume = player.getVolume();

asegúrese de llamar a la línea anterior después de iniciar el reproductor; de lo contrario, obtendrá una excepción nula.

para silenciar el volumen:

player.setVolume(0f);

para activar el volumen:

player.setVolume(currentVolume);


Recomendaré obtener el volumen actual primero y luego silenciarlo. Cuando desactives el sonido, puedes dar al usuario el mismo volumen.

float currentvolume; currentvolume = player.getVolume(); player.setVolume(0.0f);


Simplemente use player.setVolume (0) silenciará el video.


tratar

player.setSelectedTrack(DemoPlayer.TYPE_AUDIO, DemoPlayer.TRACK_DISABLED);

análogo a esta línea de código


Encontré dos maneras de lograrlo editando DemoPlayer desde ExoPlayer.

Buena una

Básicamente, necesita obtener el audioTrackRenderer que es un ExoPlayerComponent y enviar un mensaje a él. Asi que :

  1. Agrega audioRenderer miembro de audioRenderer y onRenderers en onRenderers :

    // Complete preparation. this.videoRenderer = renderers[TYPE_VIDEO]; this.audioRenderer = renderers[TYPE_AUDIO];

  2. Añadir método público:

    public void setMute(boolean toMute){ if(toMute){ player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0f); } else { player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 1f); } }

Uso
mute: player.setMute(true);
player.setMute(false); : player.setMute(false);

El otro :

Esta no es una buena solución, ya que el jugador tendrá que refuflar cuando esté desactivado.
Consiste en cambiar la pista de audio a una vacía:

// mute player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DISABLED); // Unmute player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);