web-dev-qa-db-ja.com

AndroidデバイスでWAVをmp3にエンコードする方法

質問を簡略化し、賞金を提供しました:RAW PCMオーディオデータをAndroidデバイス。

元の投稿:Android電話でシンセサイザーを作成し、PCMデータを生成していますこのPCMデータをmp3としてエンコードしてSDカードに保存できるかどうか疑問に思っています MediaRecorder オブジェクトはマイクからのオーディオをさまざまな形式にエンコードできますが、 'プログラムで生成されたオーディオデータからのエンコードを許可しません。

だから私の質問は、標準のAndroidオーディオをエンコードするためのAPIがありますか?そうでない場合、純粋なJavaまたはNDKベースのソリューションがありますか?それらのいずれか?

これに失敗すると、生成されたオーディオをWAVファイルとして保存する必要がありますが、これは簡単に行えます。

40
bramp

Pure Java
Tritonusのjavasoundのクリーンルーム実装をご覧ください。 MP3エンコーダー ここにプラグイン: http://www.tritonus.org/plugins.html
次に、jzoomのライブラリJLayerまたはJLayerMEを調べることをお勧めします。 http://www.javazoom.net/javalayer/javalayer.html (これはデコードのみである可能性があります)
これらがあなたのニーズに合わない場合は、2000年のJ2SEへのMP3機能の追加に関するこの記事を見ることができます(ソース付き): http://www.javaworld.com /javaworld/jw-11-2000/jw-1103-mp3.html

ネイティブルート
「ネイティブ」パフォーマンスが必要な場合は、FFmpegまたはAndroid用のLameポートを確認します。ラメ: http://lame.sourceforge.net/

31
Paul Gregoire

私の知る限り、SDKのツールのみを使用してこれを行うことはできません。公式開発者ガイドによると、プラットフォームにはMP3エンコーダーがないため( Android Supported Media Formats )、NDKを使用して自分でエンコーダーを移植し、ラッパーコードを記述する必要がありますJNIを介してオーディオサンプルを受信します。

私は現在、自分の音楽プレーヤー用にRockboxプロジェクトのオーディオデコーダーの移植に取り組んでおり、MP3にオーディオを記録できるので、ソースを調べてエンコーダーライブラリを見つける必要があるかもしれません。ほとんどのデコーダーにはARM最適化があり、これにより物事が顕著になります。そのため、一部のエンコーダーにもこの追加機能があると思います。

9
NagyI

Mp3エンコーダーはAndroidでは利用できません。libavをmp3 lame libでコンパイルする必要があります http://libavandroid.wordpress.com

1
Mohit Chauhan