Ho un problema con l'audio su Android.Formato AAC in Android
breve domanda:
ho bisogno di giocare e registrare audio in formato AAC un tutti i dispositivi Android. Ho scoperto che è possibile partire dall'API 10, ma sul mio dispositivo BLU (2.3.5) funziona utilizzando MediaRecorder
e MediaPlayer
. Ma su HTC Nexus One non funziona. Hai qualche suggerimento?
domanda a lungo:
per registrare e riprodurre l'audio in formato AAC sto usando il codice seguente. È piuttosto semplice e stupido, ma funziona per testare.
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);
- crea MediaPlayer e riprodurre l'audio da file;
Per farlo funzionare su nexus ho provato aac-decoder - non riproduce file fino alla fine (riproduce solo 6 secondi di file di 10 secondi). E non riproduce il suono registrato dal codice sopra.
Inoltre ho provato a installare FFmpeg, ma non ho esperienza per far funzionare questa libreria.
Quindi puoi consigliare qualcosa?
https://code.google.com/p/aacplayer-android/ –
aac-decoder è una versione breve di aacplayer. Non riproduce file AAC fino alla fine e non riproduce suoni registrati dal dispositivo. – Yanny
Ho trovato soluzioni parziali. 1. Su alcuni dispositivi l'audio non viene riprodotto perché sto provando a riprodurlo dai file derectiory - data/data/com.myapp.player/files/music.aac. 2. Su alcuni dispositivi non funziona, ma aacdecoder può riprodurre file fino alla fine. Basta impostarlo su una piccola dimensione del buffer AACPlayer aacPlayer = new MultiPlayer (clb, 200, 200); – Yanny