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

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

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

Ответы

Ответ 1

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

Хороший:

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

  • Добавьте audioRenderer член и установите его в onRenderers:

    // Complete preparation.  
    this.videoRenderer = renderers[TYPE_VIDEO];  
    this.audioRenderer = renderers[TYPE_AUDIO];  
    
  • Добавить общедоступный метод:

    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

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

int currentvolume = player.getVolume();

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

для отключения звука:

player.setVolume(0f);

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

player.setVolume(currentVolume);

Ответ 3

попробовать

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

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