Отключение звука на ExoPlayer

Я использую Google new MediaPlayer с именем ExoPlayer и не могу найти способ отключить звук

есть ли простой способ отключить звуковую дорожку на Google ExoPlayer ? Или изменение громкости ?

5 ответов


я нашел два способа достичь этого путем редактирования DemoPlayer из ExoPlayer.

правильно :

в основном, вам нужно получить audioTrackRenderer что это ExoPlayerComponent и отправить ему сообщение. Итак:

  1. добавить audioRenderer член и установить его в onRenderers:

    // Complete preparation.  
    this.videoRenderer = renderers[TYPE_VIDEO];  
    this.audioRenderer = renderers[TYPE_AUDIO];  
    
  2. добавить открытый метод:

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

использование :
немой : player.setMute(true);
unmute:player.setMute(false);


другое :

это не хорошее решение, игрок должен будет дать отпор при отключении.
Состоят из изменения звуковой дорожки на пустую:

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

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

новый способ отключения звука и громкости с версии 2.3.1 можно сделать следующим образом:

int currentvolume = player.getVolume();

обязательно вызовите линию выше после запуска игрока, иначе вы получите исключение nullpointerexception

чтобы отключить громкость:

player.setVolume(0f);

для включения громкости:

player.setVolume(currentVolume);

попробовать

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

аналогично эта строка кода


просто используйте плеер.setVolume(0) будет молчать видео.


Я рекомендую сначала получить текущий объем, а затем отключить его. Когда вы будете включать, вы можете дать пользователю тот же объем.

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