2013-05-12 2 views
3

Мне нужно иметь аудиозапись (лекцию и т. Д.) На iPhone и прямое воспроизведение через наушники.Использование AVAudioRecorder и AvAudioPlayer одновременно

У меня есть код, который работает - большую часть времени!

  1. Я настроил мой AVAudioSession

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord ошибка: ноль];

  2. Я установил плеер и магнитофон, указав один и тот же URL-адрес.

    audioRecorder = [[AVAudioRecorder Alloc] initWithURL: soundFileURL настройки: recordSettings ошибка: & ошибка];

    // установить аудио играть аудиоплеера = [[AVAudioPlayer Alloc] initWithContentsOfURL: soundFileURL ошибка: & ошибка];

  3. готовлюсь играть и записывать

    [audioRecorder prepareToRecord]; [audioPlayer prepareToPlay];

Все прошло хорошо. Затем внезапно игрок останавливается, и его текущее время идет к нулю.

Это не похоже на то, что он получает dealloc'ed, так как я могу начать воспроизводить записанный звук просто отлично с начальной позиции. Остановка происходит, по-видимому, случайным образом, в разное время каждый раз.

У кого-нибудь есть какие-либо предложения относительно проблемы или отладки?

Заранее благодарен!

+0

Это похоже на состояние гонки. Если рекордер не вставляет данные достаточно быстро, игрок достигнет конца и остановится. Взгляните на этот вопрос: http://stackoverflow.com/questions/7184341/ios-sample-code-for-simultaneous-record-and-playback – borrrden

ответ

2

Подводя итог следующему шагу: по моему опыту, AVAudioPlayer будет воспроизводиться только до тех пор, пока файл имеет данные, когда он был инициализирован.

Я борюсь с одним и тем же; Интересно, нашли ли вы когда-нибудь хорошее решение. Я работаю над подобным проектом (я хочу, чтобы записывать и воспроизводить с небольшой задержкой во время записи).

Начну с создания AVAudioRecorder, который отлично работает. Затем я запускаю AVAudioPlayer с initWithContentsOfURL, указывая на тот же файл.

То, что я обнаружил, заключается в том, что если бы в этом файле было, скажем, 3 секунды звука (через свойство .duration) в этом файле, то он остановится через 3 секунды, даже если AVAudioRecorder продолжится после этого ,

Я попытался обойти это, создав второго игрока, когда первый приближается к концу первоначальной продолжительности записи, но это приводит к небольшому выпадению звука, из которого я могу себя избавиться.

Если бы мы могли сказать, что AVAudioPlayer продолжает читать файл!

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