В настоящее время я использую классы AudioTrack и AudioRecord в Android.
Я использую чистые данные PCM, но мне было интересно, какие у меня есть варианты для других кодеков?
От эта страница кажется, что я могу кодировать и декодировать только с использованием узкополосного AMR?
В настоящее время я настроил классы аудио следующим образом:
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 на один из других поддерживаемых кодеков?
Когда я пытаюсь изменить ENCODING_PCM_16BIT на AudioFormat, я получаю только опции кодировки по умолчанию или недопустимой кодировки вместе с параметрами PCM.
Любые ссылки на учебники по кодированию и декодированию звука на Android были бы хороши, если бы кто-нибудь знал о какой-либо или какой-либо помощи здесь, очень признателен.
Спасибо
РЕДАКТИРОВАТЬ: Iизменили мой код следующим образом:
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);
Код работает правильно, но мне интересно, действительно ли он кодирует аудио как AMR_NB, и если это не правильный способ сделать это?
Я получал переполнение буфера при использовании необработанных PCM, но ни один не появился с тех пор, как использовался новый код с MediaRecorder.AudioEncoder.AMR_NB, используемым вместо AudioFormat.PCM