Как подсказывает Вирадж, вот ответ.
Да, вы можете добиться очень хороших результатов, используя AVFoundation.Во-первых, вам нужно обратить внимание на тот факт, что как для плеера, так и для рекордера их активация выполняется в два этапа.
Сначала вы заполняете его.
Затем вы играете.
Итак, начинай все.Затем воспроизведите все.
Это уменьшит вашу задержку до 70 мс.Я проверил запись метронома, затем воспроизвел его через динамики, поднося iPhone к динамикам и одновременно записав.
Вторая запись имела четкое эхо, которое, как я обнаружил, составило ~ 70 мс.Я мог бы проанализировать сигнал в Audacity, чтобы получить точное смещение.
Так что, чтобы выстроить все в ряд, я просто выполняюSelector: x withObject: y afterDelay: 70.0 / 1000.0
Возможно, скрытопрепятствия, например, задержка может отличаться от устройства к устройству.он может даже отличаться в зависимости от активности устройства.Даже возможно, что поток может быть прерван / перепланирован между запуском проигрывателя и запуском рекордера.
Но это работает, и это намного аккуратнее, чем возиться с аудио-очередями / модулями.