Schalten Sie den Ton im ExoPlayer stumm

Lesezeit: 3 Minuten

Benutzeravatar von Hugo Gresse
Hugo Gresse

Ich verwende den neuen MediaPlayer von Google namens ExoPlayer und finde keine Möglichkeit, den Ton stummzuschalten

Gibt es eine einfache Möglichkeit, Audiospuren im Google ExoPlayer stummzuschalten? Oder die Lautstärke ändern?

  • player.volume = 0f

    – WSBT

    8. April 2019 um 0:49

Benutzeravatar von Hugo Gresse
Hugo Gresse

Exoplayer 2.xx

Holen Sie sich die aktuelle Lautstärke:
int currentvolume = player.getVolume();
Stumm: player.setVolume(0f);
Stummschaltung aufheben: player.setVolume(currentVolume);


Exoplayer 1.xx

Ich habe zwei Möglichkeiten gefunden, dies durch Bearbeiten zu erreichen DemoPlayer von ExoPlayer.

Gutes:

Grundsätzlich müssen Sie das bekommen audioTrackRenderer die ein ExoPlayerComponent und ihm eine Nachricht senden. So :

  1. Hinzufügen audioRenderer Mitglied und setzen Sie es ein onRenderers:

    // Complete preparation.  
    this.videoRenderer = renderers[TYPE_VIDEO];  
    this.audioRenderer = renderers[TYPE_AUDIO];  
    
  2. Öffentliche Methode hinzufügen:

    public void setMute(boolean toMute){
        if(toMute){
            player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0f);
        } else {
            player.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 1f);
        }
    }
    

Verwendung :

stumm : player.setMute(true);

Stummschaltung aufheben: player.setMute(false);

Der andere :

Dies ist keine gute Lösung, da der Player beim Aufheben der Stummschaltung einen erneuten Puffer benötigen muss.

Bestehen darin, die Audiospur in eine leere zu ändern:

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

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

  • Tolle Lösung! Ich habe die Methode „selectTrack“ verwendet, aber der Videostream wurde jedes Mal zurückgewiesen, wenn ich eine andere Audiospur auswählte.

    – Abgeordneter

    8. Juli 2015 um 8:15

  • In ExoPlayer 2.5 können Sie die Titelauswahllösung durchführen. „In ExoPlayer 2.5 wurde diese Umpufferung eliminiert, sodass die Auswahl von Audio- und Textspuren nahtlos erfolgen kann.“ medium.com/google-exoplayer/…

    – TalkLittle

    7. August 2017 um 23:32 Uhr

  • Ist es für den ExoPlayer möglich, etwas mit einer Lautstärke abzuspielen, die unabhängig von der Systemlautstärke ist?

    – Android-Entwickler

    30. Dezember 2018 um 9:08 Uhr

  • @androiddeveloper Ich bezweifle, dass dies kein erwartetes Verhalten für den Benutzer ist. Wie im Dokument angegeben: Android uses separate audio streams for playing music, alarms, notifications, the incoming call ringer, system sounds, in-call volume, and DTMF tones. This allows users to control the volume of each stream independently. Plus: Unless your app is an alarm clock, you should play audio using the STREAM_MUSIC stream. Ref: Developer.android.com/guide/topics/media-apps/…

    – Hugo Gresse

    2. Januar 2019 um 8:49


  • @HugoGresse Manchmal ist es wichtig, einen Ton abzuspielen, den der Benutzer hört. Aus diesem Grund wollte ich vermeiden, die globalen Lautstärkepegel zu ändern.

    – Android-Entwickler

    2. Januar 2019 um 10:30 Uhr

Khooshams Benutzeravatar
Khoosham

Die neue Möglichkeit, die Lautstärke ab Version 2.XX stummzuschalten und die Stummschaltung aufzuheben, erfolgt wie folgt:

int currentvolume = player.getVolume();

Stellen Sie sicher, dass Sie die obige Zeile aufrufen, nachdem Sie den Player gestartet haben. Andernfalls erhalten Sie eine NullpointerException

Lautstärke stumm schalten:

player.setVolume(0f);

Stummschaltung der Lautstärke aufheben:

player.setVolume(currentVolume);

  • schön und einfach!

    – Panduka DeSilva

    20. März 2019 um 0:15

Mit ExoPlayer geht das ganz einfach:

Java-Code:

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

Kotlin-Code:

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

Im ExoPlayer 2.xx:

Holen Sie sich die aktuelle Lautstärke:

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

stumm:

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

Stummschaltung aufheben:

player.getAudioComponent().setVolume(currentVolume);

Ich würde empfehlen, zuerst die aktuelle Lautstärke einzustellen und sie dann stummzuschalten. Wenn Sie die Stummschaltung aufheben, können Sie dem Benutzer die gleiche Lautstärke zuweisen.

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

Thomasbs Benutzeravatar
thomasb

versuchen

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

analog zu diese Codezeile

Allen Vorks Benutzeravatar
Allen Vork

Verwenden Sie einfach player.setVolume(0), um das Video stummzuschalten.

1451730cookie-checkSchalten Sie den Ton im ExoPlayer stumm

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy