現在、Android で AudioTrack および AudioRecord クラスを使用しています。
純粋な PCM データを使用していますが、他のコーデックにはどのようなオプションがあるのか疑問に思っていました。
このページから、 AMR ナローバンドを使用してのみエンコードおよびデコードできるようです?
現在、Audio クラスを次のように設定しています。
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
私の質問は、エンコーディングを PCM からサポートされている他のコーデックのいずれかに変更するにはどうすればよいですか?
AudioFormat で ENCODING_PCM_16BIT を変更しようとすると、PCM オプションと一緒にデフォルトまたは無効なエンコーディングのオプションしか取得できません。
Android でのオーディオのエンコードとデコードに関するチュートリアルへのリンクは、ここでの助けを知っている人がいれば素晴らしいでしょう。
ありがとう
編集:コードを次のように変更しました。
arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize);
atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
**MediaRecorder.AudioEncoder.AMR_NB**,
buffersize,
AudioTrack.MODE_STREAM);
コードは適切に実行されますが、実際に Audio を AMR_NB としてエンコードするのでしょうか?これが適切な方法ではないのでしょうか?
生の PCM を使用するとバッファ オーバーフローが発生しましたが、AudioFormat.PCM の代わりに MediaRecorder.AudioEncoder.AMR_NB を使用して新しいコードを使用して以来、何も発生していません。