2010-09-04 10 views
39

kodieren Ich habe meine Frage vereinfacht und eine Prämie angeboten: Welche Möglichkeiten gibt es zum Komprimieren von rohen PCM-Audiodaten zu einem MP3 auf einem Android-Gerät.Wie man einen WAV zu einem mp3 auf einem Android-Gerät

Mein ursprünglicher Beitrag: Ich erstelle einen Synthesizer auf meinem Android-Handy, und ich habe PCM-Daten generiert, um sie an die Lautsprecher zu senden. Jetzt frage ich mich, ob ich diese PCM-Daten als mp3 kodieren kann, um sie auf der SD-Karte zu speichern. Das MediaRecorder-Objekt kann Audio, das vom Mikrofon kommt, in verschiedene Formate codieren, erlaubt jedoch nicht die Codierung von programmatisch erzeugten Audiodaten.

Also meine Frage ist, gibt es eine Standard-Android-API für die Codierung von Audio? Wenn nicht, welche reinen Java oder NDK basierten Lösungen gibt es? Und können Sie irgendwelche von ihnen empfehlen?

Failing this Ich muss nur meine generierte Audio als WAV-Datei speichern, was ich leicht tun kann.

+0

„So finden können, gibt es einen Standard-Android-API für Audio-Encoding " -- Nein. Ich werde Ihre Frage mit dem 'java' Tag neu taggen, um Ihnen zu helfen, Eingang zu erhalten ... – CommonsWare

+0

Danke CommonsWare. – bramp

+6

FYI: MP3-Technologie ist patentiert, so dass Sie in einer kommerziellen App einem potenziellen Rechtsstreit ausgesetzt sind. Ihre beste Verteidigung dagegen ist, mit Ihrem Produkt nicht erfolgreich zu sein. :) – MusiGenesis

Antwort

31

reine Java
Blick in Tritonus Reinraum Implementierung von Javasound, die hier einen MP3-Encoder Plugin bietet: http://www.tritonus.org/plugins.html
Zweitens möchte ich in jzoom Bibliotheken schlagen suchen JLayer oder JLayerME: http://www.javazoom.net/javalayer/javalayer.html (dies kann nur entschlüsseln, nicht sicher)
Wenn dies nicht Ihren Bedürfnissen entspricht, können Sie diesen Artikel aus dem Jahr 2000 über das Hinzufügen von MP3-Funktionen zu J2SE (mit Quelle): http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3.html

india Route
Wenn Sie "native" Leistung möchte ich an einem FFmpeg oder Lame-Port für Android aussehen würde. Lame: http://lame.sourceforge.net/

+1

Hi, ich nehme Audio mit AudioRecorder auf Android auf und das resultierende Ausgabeformat ist WAV. Die Ausgabe hat sehr große Größe für ex 1 Minuten Aufzeichnungen nehmen bis zu 2mb Größe. Kann ich die Größe reduzieren und mit Tritonus-Gläsern in mp3 konvertieren? wie Tritonus auf Android zu implementieren. Bitte hilf mir. –

9

Soweit ich weiß, können Sie dies nicht nur mit den Tools im SDK tun. Laut dem offiziellen Entwicklerhandbuch gibt es keinen MP3-Encoder in der Plattform (Android Supported Media Formats), daher müssen Sie einen Encoder selbst mit dem NDK portieren und dann einen Wrapper-Code schreiben, um die Audio-Samples über JNI zu erhalten.

Ich arbeite derzeit an der Portierung einiger Audio-Decoder aus dem Rockbox-Projekt für meinen eigenen Musik-Player, und es kann Audio in MP3 aufnehmen, also sollten Sie vielleicht versuchen, in die Quelle zu suchen und die Encoder-Bibliothek zu finden. Die meisten Decoder haben ARM-Optimierungen, was die Geschwindigkeit merklich erhöht, also nehme ich an, dass einige der Encoder auch diesen Zusatz haben.