在ExoPlayer上静音

时间:2014-12-10 15:13:18

标签: android exoplayer

我正在使用名为ExoPlayer的Google新MediaPlayer,无法找到静音的方法

是否有一种简单的方法可以在Google ExoPlayer上静音音轨?或者改变音量?

8 个答案:

答案 0 :(得分:26)

Exoplayer 2.x.x

获取当前音量 int currentvolume = player.getVolume();
静音: player.setVolume(0f);
取消静音: player.setVolume(currentVolume);


Exoplayer 1.x.x

我通过编辑ExoPlayer中的DemoPlayer找到了两种方法来实现它。

好的:

基本上,您需要获取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);
        }
    }
    
  3. 用法:
    静音:player.setMute(true);
    取消静音:player.setMute(false);

    另一个:

    如果取消静音,播放器需要重新缓冲,这不是一个好的解决方案。
    包括将音轨改为空音轨:

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

答案 1 :(得分:23)

从版本2.3.1开始静音和取消静音音量的新方法可以按如下方式完成:

int currentvolume = player.getVolume();

确保在启动播放器后调用上面的行,否则你将获得nullpointerexception

静音音量:

player.setVolume(0f);

取消静音音量:

player.setVolume(currentVolume);

答案 2 :(得分:8)

您可以轻松地使用ExoPlayer做到这一点:

Java代码:

float currentVolume = player.getVolume();
if (currentVolume == 0f) {
      player.setVolume(1f);
} else {
      player.setVolume(0f);
}

科林代码:

val curentVol = player?.volume
if (curentVol == 0f) {
     player?.volume = 1f
} else {
     player?.volume = 0f
}

答案 3 :(得分:2)

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

类似于this line of code

答案 4 :(得分:2)

只需使用player.setVolume(0)即可使视频静音。

答案 5 :(得分:2)

我建议先获取当前音量,然后将其静音。取消静音时,可以为用户提供相同的音量。

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

答案 6 :(得分:2)

在ExoPlayer 2.x.x中:

获取当前音量:

int currentVolume = player..getAudioComponent().getVolume();

静音:

player.getAudioComponent().setVolume(0f);

取消静音:

player.getAudioComponent().setVolume(currentVolume);

答案 7 :(得分:0)

使用 Kotlin 使 ExoPlayer 静音

player.audioComponent?.volume = 0f