Аудиозапись с кодировщиком AAC? - PullRequest
1 голос
/ 18 ноября 2011

Я записываю аудио через MediaRecorder , и проблема в том, что:

, когда я использую кодировщик AMR_NB , getDuration () возвращает правильное значение, но с другой стороныкогда я использую кодировщик AAC , он дает увеличенное значение getDuration (т.е., если я записываю 5-секундную аудиозапись, он дает 40-секундную и воспроизводится в течение 40-секундной записи)

код для записи аудиофайла

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);            
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);                       
recorder.setOutputFile(filePath); 
recorder.prepare();
recorder.start(); 

код для воспроизведения записанного звука:

mp.setDataSource(audioPath);
mp.prepare();             
Log.e("duration of record"," " +mp.getDuration());                   
mp.start();

Может дать некоторые рекомендации .. спасибо ..

1 Ответ

0 голосов
/ 17 апреля 2012

Проверьте AudioSampleRate, потому что AMR_NB работает только на частоте 8 кГц, но AAC может работать до 44,1 кГц.Вы должны работать с одной и той же частотой дискретизации всегда, либо выполнять преобразование / вычислять правильную продолжительность.

MediaRecoder.setAudioSamplingRate(frequency);
...