ExoPlayerという名前のGoogleの新しいMediaPlayerを使用していますが、サウンドをミュートする方法が見つかりません
Google ExoPlayerでオーディオトラックをミュートする簡単な方法はありますか?または音量を変更しますか?
現在のボリュームを取得:int currentvolume = player.getVolume();
ミュート:player.setVolume(0f);
ミュート解除:player.setVolume(currentVolume);
ExoPlayerから DemoPlayer
を編集してそれを実現する2つの方法を見つけました。
基本的に、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);
_
バージョン2.3.1以降のボリュームをミュートおよびミュート解除する新しい方法は、次のように実行できます。
int currentvolume = player.getVolume();
プレーヤーを起動した後、必ず上の行を呼び出してください。そうしないと、nullpointerexceptionが発生します
音量をミュートするには:
player.setVolume(0f);
音量をミュート解除するには:
player.setVolume(currentVolume);
最初に現在の音量を取得してからミュートすることをお勧めします。ミュートを解除するときに、ユーザーに同じ音量を与えることができます。
float currentvolume;
currentvolume = player.getVolume();
player.setVolume(0.0f);
Player.setVolume(0)を使用するだけで、ビデオが無音になります。
ExoPlayer 2.x.x:の場合
現在のボリュームを取得:
int currentVolume = player..getAudioComponent().getVolume();
ミュート:
player.getAudioComponent().setVolume(0f);
ミュート解除:
player.getAudioComponent().setVolume(currentVolume);