Запись аудио и воспроизведение аудио одновременно - PullRequest
3 голосов
/ 03 июля 2011

В моем приложении я записываю вход с микрофона, и в определенный момент я играю звук (пока идет запись).Теперь рекордер «останавливается» для записи (mrec.stop () все еще может использоваться), запись LogCat для этого выглядит следующим образом:

    07-03 18:40:34.811: INFO/AudioHardwareALSA(2179): Output standby called!!. Turn off PCM device.

Я тестирую на двух телефонах, один из них - Samsung GalaxyS и один - Samsung Galaxy 3. На Galaxy S все работает, как и ожидалось (то есть, запись по-прежнему происходит).Разница между этими двумя телефонами, кроме спецификаций, заключается в том, что у Galaxy S есть 2.2.1, а у Galaxy 3 2.2 я решил, что обходным путем будет повторная инициализация медиа-рекордера, но это делает приложение заикающимся, что нежелательно.

Вот дополнительная информация о настройке медиаплеера и медиа-рекордера:

    void Init()
    {
      mp = MediaPlayer.create(getContext(), R.raw.pop);
      mrec = new MediaRecorder();
      mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
      mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
      mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
      [..]
      mrec.setOutputFile(audiofile.getAbsolutePath());
      mrec.prepare();
      mrec.start();
    }

    void Event()
    {
      mp.start();
    }

Почему запись «останавливается»?Есть ли способ остановить остановку?Это желаемое поведение?Как я могу узнать, что не так?

Любые советы приветствуются.

1 Ответ

1 голос
/ 19 апреля 2013

Попробуйте использовать родной базовый плеер и рекордер ... Это доступно через класс AudioTrack и другие связанные API, такие как аудио формат.Используя их, вы можете записывать и воспроизводить аудиоданные PCM порциями или в буфере (явные байтовые массивы) и использовать цикл для записи буфера во все, что захотите.Может быть, это позволило бы заниматься перекодированием и проигрыванием одновременно

Удачи

...