2013-03-07 73 views
5

我在android上遇到音頻問題。Android中的AAC格式

簡短的問題:

我需要AAC格式播放和錄製音頻的所有的Android設備。 我發現它是由API 10可能開始,但我的BLU設備(2.3.5),它的工作原理是利用MediaRecorderMediaPlayer。 但在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的,但我沒有經驗,使這個圖書館工作。

所以,你可以推薦一下嗎?

+0

https://code.google.com/p/aacplayer-android/ – 2013-03-13 11:21:21

+0

AAC解碼器是aacplayer的短版本。它不播放aac文件到最後,不播放設備錄製的聲音。 – Yanny 2013-03-13 14:12:55

+0

我找到了部分解決方案。 1.在某些設備上音頻沒有播放,因爲我試圖從文件derectiory - data/data/com.myapp.player/files/music.aac播放它。 2.在某些設備上它不起作用,但aacdecoder可以播放文件到最後。只需將它設置爲小緩衝區大小AACPlayer aacPlayer = new MultiPlayer(clb,200,200); – Yanny 2013-03-20 14:23:37

回答

1

我通過改變音頻類型MP3解決這個問題,因爲某些設備(如Kindle Fire的)不從任何地方播放AAC。

我的建議是: 如果你想跨平臺的聲音 - 使用MP3。您可以用lame encoder將任何聲音轉換爲MP3。