Вопрос

В настоящее время я использую 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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top