web-dev-qa-db-ja.com

ExoPlayerの音声をミュートする

ExoPlayerという名前のGoogleの新しいMediaPlayerを使用していますが、サウンドをミュートする方法が見つかりません

Google ExoPlayerでオーディオトラックをミュートする簡単な方法はありますか?または音量を変更しますか?

32
Hugo Gresse

Exoplayer 2.x.x

現在のボリュームを取得:int currentvolume = player.getVolume();
ミュート:player.setVolume(0f);
ミュート解除:player.setVolume(currentVolume);


Exoplayer 1.x.x

ExoPlayerから DemoPlayer を編集してそれを実現する2つの方法を見つけました。

良いもの:

基本的に、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);

別のもの :

これは良い解決策ではありません。ミュートを解除すると、プレーヤーは再バッファリングする必要があります。
オーディオトラックを空のトラックに変更する:

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

// Unmute
player.selectTrack(FullPlayer.TYPE_AUDIO, ExoPlayer.TRACK_DEFAULT);
_
31
Hugo Gresse

バージョン2.3.1以降のボリュームをミュートおよびミュート解除する新しい方法は、次のように実行できます。

int currentvolume = player.getVolume();

プレーヤーを起動した後、必ず上の行を呼び出してください。そうしないと、nullpointerexceptionが発生します

音量をミュートするには:

player.setVolume(0f);

音量をミュート解除するには:

player.setVolume(currentVolume);
24
Khoosham

最初に現在の音量を取得してからミュートすることをお勧めします。ミュートを解除するときに、ユーザーに同じ音量を与えることができます。

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

試す

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

このコード行 に類似

2
thomasb

Player.setVolume(0)を使用するだけで、ビデオが無音になります。

2
Allen Vork

ExoPlayer 2.x.x:の場合

現在のボリュームを取得:

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

ミュート:

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

ミュート解除:

player.getAudioComponent().setVolume(currentVolume);
0
Hadi