2013-03-07 5 views
5

У меня проблема с аудио на Android.Формат AAC в Android

Короткий вопрос:

мне нужно играть и записывать звук в формате AAC все Android устройства. Я обнаружил, что это возможно, начинается с API 10, но на моем устройстве BLU (2.3.5) он работает с использованием MediaRecorder и MediaPlayer. Но на 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/ –

+0

aac-decoder - это короткая версия aacplayer. Он не воспроизводит файл aac до конца и не воспроизводит звук, записанный устройством. – Yanny

+0

Я нашел частичные решения. 1. На некоторых устройствах звук не воспроизводится, потому что я пытаюсь воспроизвести его из файлов derectiory - data/data/com.myapp.player/files/music.aac. 2. На некоторых устройствах он не работает, но aacdecoder может воспроизводить файл до конца. Просто установите для него небольшой размер буфера AACPlayer aacPlayer = new MultiPlayer (clb, 200, 200); – Yanny

ответ

1

Я решаю эту проблему, изменяя тип звука в MP3, потому что некоторые устройства (например, Kindle Fire) не играют в aac из любого места.

Моя рекомендация: Если вы хотите сделать кросс-платформенные звуки - используйте MP3. Вы можете конвертировать любой звук в MP3 с помощью lame encoder.

Смежные вопросы