我正在使用名为ExoPlayer的Google新MediaPlayer,无法找到静音的方法
是否有一种简单的方法可以在Google ExoPlayer上静音音轨?或者改变音量?
答案 0 :(得分:26)
获取当前音量
int currentvolume = player.getVolume();
静音: player.setVolume(0f);
取消静音: player.setVolume(currentVolume);
我通过编辑ExoPlayer中的DemoPlayer
找到了两种方法来实现它。
基本上,您需要获取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);
取消静音: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)
答案 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