Формат 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 и воспроизводит звук из файла;

Чтобы заставить его работать на нексусе, я попробовал aac-decoder - он не воспроизводит файл до конца (играет только 6 секунд из 10 секунд файла). И он не воспроизводит звук, записанный кодом выше.

Также я пытался установить FFmpeg, но у меня нет опыта работы с этой библиотекой.

Так что можете порекомендовать что-нибудь?


person Yanny    schedule 07.03.2013    source источник
comment
code.google.com/p/aacplayer-android   -  person R KiranKumar    schedule 13.03.2013
comment
aac-decoder — это укороченная версия aacplayer. Он не воспроизводит файл aac до конца и не воспроизводит звук, записанный устройством.   -  person Yanny    schedule 13.03.2013
comment
Я нашел частичные решения. 1. На некоторых устройствах звук не воспроизводится, потому что я пытаюсь воспроизвести его из файлов каталога - data/data/com.myapp.player/files/music.aac. 2. На некоторых устройствах не работает, но aacdecoder может проигрывать файл до конца. Просто установите для него небольшой размер буфера AACPlayer aacPlayer = new MultiPlayer(clb, 200, 200);   -  person Yanny    schedule 20.03.2013


Ответы (1)


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

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

person Yanny    schedule 19.04.2013