Android AudioRecord и Audiotrack Codec Варианты?
Вопрос
В настоящее время я использую 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 на одну из других поддерживаемых кодеков?
Когда я пытаюсь изменить incoding_pcm_16bit на audioformat, я получаю только параметры по умолчанию или недействительным кодировкой вместе с параметрами 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);
Код запускается правильно, но мне интересно, это фактически кодирует аудио как AMR_NB, и если это не правильный способ сделать это?
Я получал переполнение буфера при использовании RAW PCM, но ни один не появился с момента использования нового кода с Mediarecorder.Audioencoder.amr_nb, используемый вместо аудиоформат.PCM
Решение
Как государства документации для AudioRecord
а также AudioTrack
:
audioFormat the format in which the audio data is represented. See ENCODING_PCM_16BIT and ENCODING_PCM_8BIT
Вы можете работать только с 8-битным и 16-битной PCM. Если вы хотите аудио в других форматах, либо не используйте AudioRecord
а также AudioTrack
(пытаться MediaRecorder
а также MediaPlayer
) Или вам придется транскторировать его, используя свой собственный код, возможно, используя NDK.
AudioRecord
а также AudioTrack
Разработаны специально для случаев, когда рассматриваемый звук не поддерживается мультимедийным двигателем OpenCore, либо потому, что это не поддерживаемый кодек или не поддерживаемый протокол потоковой передачи (например, SIP).