J'utilise actuellement les classes AudioTrack et AudioRecord sous Android.Options de codec Android AudioRecord et AudioTrack?
J'utilise les données PCM pur mais je me demandais quelles sont mes options pour les autres codecs?
De this page il semble que je peux seulement encoder et décoder en utilisant AMR à bande étroite?
Je suis actuellement mis en place les classes audio comme suit:
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);
Donc, ma question est de savoir comment puis-je modifier le codage de PCM à l'un des autres codecs pris en charge? Lorsque j'essaie de changer ENCODING_PCM_16BIT sur AudioFormat, je n'ai que les options de codage par défaut ou invalides avec les options PCM.
Tous les liens vers des didacticiels sur l'encodage et le décodage audio sur Android serait génial si quelqu'un sait de n'importe quelle aide ici grandement appréciée.
Merci
EDIT: Je ont changé mon code à ce qui suit:
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);
Le code fonctionne correctement mais je me demande-t-il encode en fait le Audio comme AMR_NB et si cela est pas une bonne façon de le faire?
Je recevais un débordement de mémoire tampon lors de l'utilisation PCM brut, mais aucun n'a paru depuis en utilisant le nouveau code avec le MediaRecorder.AudioEncoder.AMR_NB utilisé à la place du Comme l'indique la documentation AudioFormat.PCM
Il y a longtemps que vous avez posté votre question, mais c'est peut-être intéressant pour quelqu'un ... Vous ne codez pas AMR_NB. Les drapeaux sont juste des champs int. MediaRecorder.AudioEncoder.AMR_NB est 0x01 ... identique à AudioFormat.ENCODING_DEFAULT. Donc, vous utilisez simplement l'encodage par défaut. – hacksteak25