在ExoPlayer上静音

Hug*_*sse 28 android exoplayer

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

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

Hug*_*sse 35

我通过编辑int currentvolume = player.getVolume();ExoPlayer 找到了两种方法来实现它.

好的一个:

基本上,您需要获取player.setVolume(0f);哪个是a player.setVolume(currentVolume);并向其发送消息.所以:

  1. 添加DemoPlayer成员并将其设置为audioTrackRenderer:

    // Complete preparation.  
    this.videoRenderer = renderers[TYPE_VIDEO];  
    this.audioRenderer = renderers[TYPE_AUDIO];  
    
    Run Code Online (Sandbox Code Playgroud)
  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);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

用法:
静音:ExoPlayerComponent
取消静音:audioRenderer


另一个 :

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

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

// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
Run Code Online (Sandbox Code Playgroud)


小智 24

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

int currentvolume = player.getVolume();
Run Code Online (Sandbox Code Playgroud)

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

静音音量:

player.setVolume(0f);
Run Code Online (Sandbox Code Playgroud)

取消静音音量:

player.setVolume(currentVolume);
Run Code Online (Sandbox Code Playgroud)


小智 10

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

Java代码:

float currentVolume = player.getVolume();
if (currentVolume == 0f) {
      player.setVolume(1f);
} else {
      player.setVolume(0f);
}
Run Code Online (Sandbox Code Playgroud)

科特林代码:

val curentVol = player?.volume
if (curentVol == 0f) {
     player?.volume = 1f
} else {
     player?.volume = 0f
}
Run Code Online (Sandbox Code Playgroud)


小智 5

在 ExoPlayer 2.xx 中:

获取当前音量:

int currentVolume = player..getAudioComponent().getVolume();
Run Code Online (Sandbox Code Playgroud)

沉默的:

player.getAudioComponent().setVolume(0f);
Run Code Online (Sandbox Code Playgroud)

取消静音:

player.getAudioComponent().setVolume(currentVolume);
Run Code Online (Sandbox Code Playgroud)