У меня проблема с аудио на Android.Формат AAC в Android
Короткий вопрос:
мне нужно играть и записывать звук в формате AAC все Android устройства. Я обнаружил, что это возможно, начинается с API 10, но на моем устройстве BLU (2.3.5) он работает с использованием MediaRecorder
и MediaPlayer
. Но на HTC Nexus One он не работает. Есть ли у вас какие-либо предложения?
Длинный вопрос:
Для записи и воспроизведения звука в формате AAC Я использую следующий код. Это довольно просто и глупо, но оно работает для тестирования.
String pathForAppFiles = getFilesDir()
.getAbsolutePath();
pathForAppFiles += "/bla.mp4";
if (audioRecorder == null) {
File file = new File(pathForAppFiles);
if (file.exists())
file.delete();
audioRecorder = new MediaRecorder();
audioRecorder
.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder
.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
audioRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
audioRecorder.setOutputFile(pathForAppFiles);
try {
audioRecorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
audioRecorder.start();
} else {
audioRecorder.stop();
audioRecorder.release();
audioRecorder = null;
new AudioUtils().playSound(pathForAppFiles);
}
new AudioUtils().playSound(pathForAppFiles);
- создает MediaPlayer и воспроизводить звук из файла;
Чтобы заставить его работать на nexus, я попробовал aac-decoder - он не воспроизводит файл до конца (он воспроизводит только 6 секунд из 10-секундного файла). И он не воспроизводит звук, записанный в коде выше.
Также я попытался установить FFmpeg, но у меня нет опыта, чтобы эта библиотека работала.
Так вы можете что-то порекомендовать?
https://code.google.com/p/aacplayer-android/ –
aac-decoder - это короткая версия aacplayer. Он не воспроизводит файл aac до конца и не воспроизводит звук, записанный устройством. – Yanny
Я нашел частичные решения. 1. На некоторых устройствах звук не воспроизводится, потому что я пытаюсь воспроизвести его из файлов derectiory - data/data/com.myapp.player/files/music.aac. 2. На некоторых устройствах он не работает, но aacdecoder может воспроизводить файл до конца. Просто установите для него небольшой размер буфера AACPlayer aacPlayer = new MultiPlayer (clb, 200, 200); – Yanny