質問を簡略化し、賞金を提供しました:RAW PCMオーディオデータをAndroidデバイス。
元の投稿:Android電話でシンセサイザーを作成し、PCMデータを生成していますこのPCMデータをmp3としてエンコードしてSDカードに保存できるかどうか疑問に思っています MediaRecorder オブジェクトはマイクからのオーディオをさまざまな形式にエンコードできますが、 'プログラムで生成されたオーディオデータからのエンコードを許可しません。
だから私の質問は、標準のAndroidオーディオをエンコードするためのAPIがありますか?そうでない場合、純粋なJavaまたはNDKベースのソリューションがありますか?それらのいずれか?
これに失敗すると、生成されたオーディオをWAVファイルとして保存する必要がありますが、これは簡単に行えます。
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/
私の知る限り、SDKのツールのみを使用してこれを行うことはできません。公式開発者ガイドによると、プラットフォームにはMP3エンコーダーがないため( Android Supported Media Formats )、NDKを使用して自分でエンコーダーを移植し、ラッパーコードを記述する必要がありますJNIを介してオーディオサンプルを受信します。
私は現在、自分の音楽プレーヤー用にRockboxプロジェクトのオーディオデコーダーの移植に取り組んでおり、MP3にオーディオを記録できるので、ソースを調べてエンコーダーライブラリを見つける必要があるかもしれません。ほとんどのデコーダーにはARM最適化があり、これにより物事が顕著になります。そのため、一部のエンコーダーにもこの追加機能があると思います。
Mp3エンコーダーはAndroidでは利用できません。libavをmp3 lame libでコンパイルする必要があります http://libavandroid.wordpress.com