43

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

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

4

8 回答 8

62

Exoplayer 2.xx

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


Exoplayer 1.xx

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

好一个:

基本上,您需要获取audioTrackRendererwhich is aExoPlayerComponent并向其发送消息。所以 :

  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);
取消静音:player.setMute(false);

另一个 :

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

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

// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
于 2014-12-10T15:13:18.337 回答
26

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

int currentvolume = player.getVolume();

确保在启动播放器后调用上面的行,否则你会得到一个空指针异常

静音:

player.setVolume(0f);

取消静音:

player.setVolume(currentVolume);
于 2017-04-27T07:52:50.243 回答
10

您可以使用 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
}
于 2020-05-28T11:09:35.973 回答
5

在 ExoPlayer 2.xx 中:

获取当前音量:

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

沉默的:

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

取消静音:

player.getAudioComponent().setVolume(currentVolume);
于 2019-08-04T12:12:15.747 回答
2

尝试

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

类似于这行代码

于 2016-06-17T07:11:10.840 回答
2

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

float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
于 2018-09-18T21:23:04.627 回答
2

只需简单地使用 player.setVolume(0) 将使视频静音。

于 2018-09-10T10:02:34.923 回答
0

使用 Kotlin 静音 ExoPlayer

player.audioComponent?.volume = 0f
于 2021-02-02T15:29:01.500 回答