Einige besondere Umstände zwingen mich, dieses perverse Ding zu machen.
Ist es möglich, zwei verschiedene Audiostreams auf verschiedenen Kanälen abzuspielen? Stellen Sie sich ein Headset vor und ich muss den 1. Song am linken Lautsprecher und den 2. Song am rechten Lautsprecher gleichzeitig spielen.
Nach einigen Recherchen habe ich festgestellt, dass es möglich ist, auf einem einzelnen Kanal zu spielen. Es ist sogar möglich, einen von ihnen zu schließen. Aber ich habe keine Information gefunden, wie man 2 Audiostreams gleichzeitig spielt.
Ist es überhaupt möglich? Und wie? Einige Codebeispiele und Links geschätzt!
Forschungsergebnisse.
1) AudioTrack
kann auf verschiedenen Kanälen spielen
2) SoundPool
können die Lautstärke für die linken und rechten Kanäle separat einstellen. Technisch ist es also möglich, 2 Streams zu starten und für 1 0-Volume und 100 für das rechte Volume und umgekehrt für den 2. Stream zu setzen. Richtig?
Beispiel:
%Vor% Perhabs gibt es eine solche Lösung mit MediaPlayer
, also wäre das viel vorzuziehen!
LÖSUNG :
Scheint als wäre die einfachste Lösung, SoundPool
zu verwenden. So wie ich es getestet habe.
Es fehlen zwar Features wie MediaPlayer.OnCompletionListener()
. Jetzt aber sicher wie man das umsetzt .. Problem gelöst.
Beide Ansätze 1) 2) sollte funktionieren, wie Sie gesagt haben.
In Bezug auf Ansatz 1), wenn Sie verschiedene Streams gleichzeitig abspielen möchten, können Sie beide Kanäle mit unterschiedlichen Daten in derselben Schleife schreiben, ohne zwei Loops zu verwenden. Um die Lautstärke pro Kanal festzulegen können Sie die Methode AudioTrack
setStereoVolume(float leftGain, float rightGain)
.
Da MediaPlayer
eine High-Level-API ist, bietet sie dieses Spezifitätsniveau nicht; Eine Abhilfe könnte darin bestehen, die Audiodaten in einer Datei zu speichern (den linken / rechten Kanal stummzuschalten) und sie als normales Medienelement mit MediaPlayer
wiederzugeben.
UPDATE:
Speichern Sie die Audiodaten in einer Datei (Stummschalten des linken / rechten Kanals)
Wenn Sie Ihre Audiodaten im AudioTrack-kompatiblen Format (PCM) haben, müssen Sie dazu lediglich die Daten wie angegeben verarbeiten (einen Kanal stummschalten, indem Sie einen Teil des Arrays zurücksetzen) und dann das Array speichern / Puffer zu einer Datei als WAV / PCM. Werfen Sie einen Blick auf hier , um weitere Einzelheiten und Anweisungen zum Speichern von WAV-Dateien zu erhalten.