2013-03-07 20 views
5

Ich habe ein Problem mit Audio auf Android.AAC-Format in Android

Kurz Frage:

Ich muss spielen und Audio-Aufnahme in aac-Format eine alle Android-Geräte. Ich habe festgestellt, dass es möglich ist, beginnend mit API 10, aber auf meinem BLU-Gerät (2.3.5) funktioniert es mit MediaRecorder und MediaPlayer. Aber auf HTC Nexus One funktioniert es nicht. Haben Sie irgendwelche Vorschläge?

Lange Frage:

Zur Aufzeichnung und Audio in AAC-Format abspielt ich folgenden Code bin mit. Es ist ziemlich einfach und dumm, aber es funktioniert zum Testen.

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); - erstellt Mediaplayer und Sound aus Datei spielen;

Um es auf nexus arbeiten, habe ich versucht aac-decoder - es spielt keine Datei bis zum Ende (spielt nur 6 Sekunden von 10 Sekunden Datei). Und es gibt keinen Ton wieder, der mit dem obigen Code aufgezeichnet wurde.

Auch ich habe versucht, FFmpeg zu installieren, aber ich habe keine Erfahrung, um diese Bibliothek arbeiten zu lassen.

Also können Sie etwas empfehlen?

+0

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

+0

aac-decoder ist eine Kurzversion von aacplayer. Es spielt keine aac-Datei bis zum Ende und spielt keinen Ton ab, der vom Gerät aufgenommen wurde. – Yanny

+0

Ich habe Teillösungen gefunden. 1. Auf einigen Geräten Audio nicht gespielt, weil ich versuche, es von Dateien deregistrieren zu spielen - Daten/Daten/com.myapp.player/files/music.aac. 2. Auf einigen Geräten funktioniert es nicht, aber ein Decoder kann die Datei bis zum Ende abspielen. Setzen Sie es einfach auf kleine Puffergröße AACPlayer aacPlayer = neuer MultiPlayer (clb, 200, 200); – Yanny

Antwort

1

Ich löse dieses Problem, indem ich den Audiotyp in MP3 ändere, weil einige Geräte (wie Kindle Fire) keinen aac von irgendwo wiedergeben.

Meine Empfehlung ist: Wenn Sie plattformübergreifende Sounds erstellen möchten - verwenden Sie MP3. Sie können jeden Ton mit lame encoder in MP3 konvertieren.

Verwandte Themen