2011年10月31日月曜日

Android携帯で音声をMP3で録音したいとき。

Androidでは、音声を各種フォーマットで録音することができます。
録音に使えるクラスはいくつかあります。

ここのページがよくまとまっているかと。


これらのクラスについて調べてみると、さまざまなデータフォーマットでの録音に対応しているのですが、MP3に対応しているクラスは存在しません。

では、Android端末で音声をMP3フォーマットで保存したいときはどうするかというと、LAMEを使います。

LAME。懐かしい響き。
MP3によるリッピングが流行ったころに、お世話になった方もいらっしゃるのではないでしょうか。

次のサイトでは、AndroidでLAMEを使用するサンプルが公開されています。


このサンプルを流用して、独自のプログラムを作成するときに気をつけなければならないことは、次のとおり。
  1. libmp3lame.soは、プロジェクトルートからlibs/armeabi/libmp3lame.soとして保存しなければならない。
  2. SimpleLame.javaやRecMicToMp3.javaのパッケージはそれぞれ、com.uraroji.garage.android.lameとcom.uraroji.garage.android.mp3recvoiceでなければならない。
soファイルの保存先やパッケージ名を変えたいときは、LAMEをNDKでコンパイルしなおさなけばなりません。
コンパイルの方法は、サンプルのドキュメントに示されています。

なお、MP3(LAME)についてはこんな話もあるので、知っておいて損はないかと。


ここの「mp3というフォーマットと特許・著作権

まとめ:Android端末でのMP3録音はLAMEで。ただし、MP3というフォーマットの特許・著作権については知っておこう。