2013-03-07 36 views
5

Tôi gặp sự cố với âm thanh trên Android.Định dạng AAC trong Android

Câu hỏi ngắn:

Tôi cần phát và ghi âm ở định dạng aac trên tất cả các thiết bị Android. Tôi thấy rằng có thể bắt đầu từ API 10, nhưng trên thiết bị BLU của tôi (2.3.5) nó hoạt động bằng cách sử dụng MediaRecorderMediaPlayer. Nhưng trên HTC Nexus One nó không hoạt động. Bạn có đề xuất nào không?

Câu hỏi dài:

Để ghi và phát âm thanh ở định dạng AAC Tôi đang sử dụng mã sau. Nó khá đơn giản và ngu ngốc, nhưng nó hoạt động để thử nghiệm.

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); - tạo MediaPlayer và phát âm thanh từ tệp;

Để làm cho nó hoạt động trên nexus tôi đã thử aac-decoder - nó không phát tệp đến cuối (chỉ phát 6 giây trong 10 giây tệp). Và nó không phát âm thanh được ghi lại bằng mã ở trên.

Ngoài ra tôi đã cố gắng cài đặt FFmpeg, nhưng tôi chưa có kinh nghiệm để làm cho thư viện này hoạt động.

Bạn có thể giới thiệu điều gì đó không?

+0

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

+0

bộ giải mã aac là phiên bản ngắn của aacplayer. Nó không phát tệp aac đến cuối và không phát âm thanh được ghi bởi thiết bị. – Yanny

+0

Tôi tìm thấy một phần giải pháp. 1. Trên một số thiết bị âm thanh không phát bởi vì tôi đang cố gắng phát nó từ các tập tin derectiory - dữ liệu/dữ liệu/com.myapp.player/files/music.aac. 2. trên một số thiết bị nó không hoạt động nhưng aacdecoder có thể chơi tập tin để kết thúc. Chỉ cần thiết lập kích thước bộ đệm nhỏ AACPlayer aacPlayer = new MultiPlayer (clb, 200, 200); – Yanny

Trả lời

1

Tôi giải quyết vấn đề này bằng cách thay đổi loại âm thanh thành MP3, vì một số thiết bị (như Kindle Fire) không phát aac từ bất kỳ đâu.

Đề xuất của tôi là: Nếu bạn muốn tạo âm thanh nền tảng - hãy sử dụng MP3. Bạn có thể chuyển đổi bất kỳ âm thanh sang MP3 với lame encoder.

Các vấn đề liên quan