Kurzfassung: Was ist der beste Weg, Daten in einer MP3 (und idealerweise in einem AAC/Ogg/WMA) in ein Java-Array oder ByteBuffer zu konvertieren das kann ich dann manipulieren?Entschlüsseln von codierten Audiodaten (MP3s usw.) auf Android, ohne abzuspielen
Ich stelle ein Programm zusammen, das Sounddateien als eine seiner Funktionen verlangsamt und beschleunigt. Dies funktioniert gut für WAV-Dateien, , die eine Kopfzeile plus die genauen binären Daten sind, die an der Lautsprecher gesendet werden müssen, und jetzt muss ich es für MP3 implementieren (idealerweise würde diese auch AAC, Ogg und WMA unterstützen , aber da diese weniger populär sind Formate ist dies nicht erforderlich). Android stellt keine Schnittstelle zur Verfügung, um die MP3 zu decodieren, ohne es zu spielen, also muss ich diese Schnittstelle herstellen.
drei Optionen präsentieren sich, obwohl ich offen für andere bin:
1) meine eigenen Decoder schreiben. Ich habe bereits einen funktionalen Rahmen-Detektor , den ich gehofft hatte, für Option (3) zu verwenden, und jetzt sollte nur die Huffman-Dekodierungstabellen implementieren müssen.
2) Verwenden Sie JLayer oder eine äquivalente Java-Bibliothek, um die Decodierung zu verarbeiten. Ich bin mir nicht ganz klar darüber, was die Lizenzverästelungen hier sind.
3) Verbinden Sie sich mit der libmedia library/MediaPlayerService. Dies ist, was SoundPool tut, und die Menge der Nutzung dieses Dienstes glaube ich , dass, während es offiziell instabil ist, diese Implementierung nirgends geht. Dies bedeutet, JNI-Code schreiben, um eine Verbindung mit dem Dienst herzustellen, aber Ich finde, dass das ein tiefes Kaninchen ist. An der Oberfläche bin ich Probleme mit der sp <> Vorlage.
Haben Sie Glück mit diesem Problem? – twk
ist es Ihnen gelungen, Audiodaten zu dekodieren? Wenn ja, wie hast du das gemacht? –