在ExoPlayer上静音

问题描述 投票:25回答:5

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

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

android exoplayer
5个回答
29
投票

Exoplayer 2.x.x

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


Exoplayer 1.x.x

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

Good one :

基本上,你需要得到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); 取消静音:player.setMute(false);

The other one :

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

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

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

23
投票

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

int currentvolume = player.getVolume();

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

静音音量:

player.setVolume(0f);

取消静音音量:

player.setVolume(currentVolume);

2
投票

尝试

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

类似于this line of code


2
投票

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


2
投票

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

float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
© www.soinside.com 2019 - 2024. All rights reserved.