2013-03-07 18 views
5

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?

+0

https://code.google.com/p/aacplayer-android/ –

+0

aac-decoder è una versione breve di aacplayer. Non riproduce file AAC fino alla fine e non riproduce suoni registrati dal dispositivo. – Yanny

+0

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

risposta

1

Risolvo questo problema cambiando il tipo di audio in MP3, perché alcuni dispositivi (come Kindle Fire) non vengono riprodotti da nessun'altra parte.

La mia raccomandazione è: Se si desidera eseguire suoni multipiattaforma, utilizzare MP3. Puoi convertire qualsiasi suono in MP3 con lame encoder.

Problemi correlati