今回はMediaRecoreder周りで少し、自分でわかった事があったので、
で書いていた分でしたが、今回はちょっとプラスで書かせてもらいます。
■mp3に変換したい
mp3という形式が一般には有名で、多くの人もこの形式を望んだりしますが、この形式にするには現状のアンドロイドではデフォルトで用意されていません。
いろいろなサイトをみた結果、一応、音のデータを取得して、劣化なしのwavの形式などにできるので、そのwavのまま、NDKという、c#が使える方法があるのですが、ネイティブコードと結構表現されたりしますが、
c#ではwav形式をmp3に変換するライブラリがあって、それを利用しましょう。っていうのが、現在のところ、唯一の方法でした。mp3に変換するjavaのライブラリもありそうですが、音関係の情報は一般的に多くなくわりと大変でした。
なので、僕はあきらめました。この報告ですが、割りと探せばありそうな気がしたので、1日を無駄にして、この結論に至ったとの報告です。
絶対な条件だったり、ndkに親和性があればやってもいいかな。とおもいます。
■音質が悪い。
次ですが、以前の方法で、音を取得していたのですが、どうも音質が悪い。
recorder.setAudioSamplingRate
という関数がandroidの2.2~で利用ができるのですが、ここの値が8000だと大丈夫ですが、44100にするとエラーで落ちてしまいました。
というか、デフォルトの値は8000だから音質が悪い。という感じもしますが、ここの値を変更する際には、
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
のようにencoderをDEFAULTにしていたのをAACに変更してあげます。
そうすると、エラーも起きないで、高音質な録音が可能でした。
一応、8000,16000,22050,44100あたりが標準でサポートされてくれる値なので、44100で容量が重くなってしまうなどで、懸念があれば、22050あたりで音質を少し減らしてもいいと思います。
自分で実際に試したところ、音質の違いが大きすぎてびっくりしました。
ぜひ、お試しください。