android 在ExoPlayer上静音音频

yx2lnoni  于 2023-04-18  发布在  Android
关注(0)|答案(9)|浏览(473)

我使用谷歌新的媒体播放器命名为ExoPlayer,无法找到一种方法来静音
有没有一个简单的方法来静音音轨在谷歌ExoPlayer?或改变音量?

6tdlim6h

6tdlim6h1#

从版本2.X.X开始,静音和取消静音音量的新方法如下所示:

int currentvolume = player.getVolume();

确保在启动播放器后调用上面的行,否则你将得到一个nullpointerexception
要静音音量:

player.setVolume(0f);

要取消音量静音,请执行以下操作:

player.setVolume(currentVolume);
bjg7j2ky

bjg7j2ky2#

您可以使用ExoPlayer轻松完成:
Java代码:

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

Kotlin代码:

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

cedebl8k3#

在ExoPlayer 2.x.x中:
获取当前卷:

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

静音:

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

取消静音:

player.getAudioComponent().setVolume(currentVolume);
00jrzges

00jrzges4#

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

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

ktecyv1j5#

尝试

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

类似于这行代码

exdqitrt

exdqitrt6#

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

gmxoilav

gmxoilav7#

使用Kotlin禁用ExoPlayer

player.audioComponent?.volume = 0f
koaltpgm

koaltpgm8#

返回音频音量,0表示静音,1表示单位增益(信号不变)。
您应该使用新版本:implementation 'com.google.android.exoplayer:exoplayer:2.18.5'

  • 静音音量:
exoPlayer.volume = 0f
  • 取消静音音量值:
exoPlayer.volume = 1f
exdqitrt

exdqitrt9#

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];

1.添加公共方法:

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);

相关问题